{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "5134ad72",
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch\n",
    "import torch.nn as nn\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import scipy.io\n",
    "from sklearn.model_selection import train_test_split"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "db0fcd6b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1, 201)\n",
      "(1, 101)\n",
      "(101, 201)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0MAAAFNCAYAAADCVbS2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAB4pElEQVR4nO29e5w1V1nn+3167+73DRLlErkkIEENCoKiRtDjQRlAZDwOcUYOBryAE8w4R3RGxwwwOMiJMieiI8N8ZNRXiOA1IGcG4jEabuaoIzAJIwrJHDCGW0Ik5ALqEJO3u5/zR1V1V1dXrVp121V71+/7+byft/euWpeqvXvv9e1nrWeZuyOEEEIIIYQQc2Nr7A4IIYQQQgghxBhIhoQQQgghhBCzRDIkhBBCCCGEmCWSISGEEEIIIcQskQwJIYQQQgghZolkSAghhBBCCDFLJENCCNEjZvZ6M/vp9Ocnm9nNY/cpj5m93Mx+Y+x+DIGZXW9mTx67H0IIIdYHyZAQQrTEzK4xs7vM7MTYfRkLM/uomd1tZn+X+/cLK2j3QDoz3P0r3P2aodsWQgixOUiGhBCiBWZ2LvAkwIFnjtub0flH7n7f3L8Xjt0hIYQQIgbJkBBCtOP7gPcArweeF1PAzM42s//bzD5tZh8xsx/JHXu5mb3JzH7NzP42nfJ1fqCuhZn9GzP7q/T895nZw9NjrzazT5jZ36TPP6lQfKeqnTTS8+Nm9hdm9lkze6OZnWxwX4p9/Dkzu93MbjKzHzIzN7Nlrq2nFe7Bb+Qe/46Z/XXajz8ys69In78Y+G7gX6eRqN8t1mdmJ8zsP5jZJ9N//yGL4GXTF83sX5nZbWZ2q5l9f5trFEIIsd5IhoQQoh3fB/xm+u9bzezBoZPNbAv4XeDPgXOApwL/0sy+NXfaM4ErgPsBVwKh6WY/BjwH+Dbg84F/CnwuPXYt8HjgAcBvAb9TEJq6dp4NPAN4JPCVwPND1xbgB4BvB74aOB94VsPyvw+cBzwI+O8k9xp3P5X+/Mo0EvWPSsq+FPh6kvvwVcATgJ/IHX8I8AUkr8VFwGvM7P4N+yeEEGLNkQwJIURDzOx/BR4BvMnd3wf8FfDcmmJfB3yhu1/q7ve6+03ArwAX5s75E3e/yt33gF8nGcRX8QLgJ9z9Q57w5+5+B4C7/4a73+Huu+7+74ETwJc1aOc/uvsn3f1OEoF7fM21vcXMPpP79wPp888G/oO7fyKt6/+qqecI7n65u/+tu98DvBz4KjP7gsji3w1c6u63ufungf8T+N7c8dPp8dPufhXwdxy9R0IIIWaAZEgIIZrzPOBt7n57+vi3qJ8q9wjg7Lw0AP8GyEeU/jr38+eAk2a2NLPvziUn+P30+MNJJOwY6TS3/5FOL/sMSQTkrLp2Asfvm9b7+7l+fHfunO9w9/vl/v1K+vzZwCdy532srL8V17Aws8vSaYB/A3w0PXRWoFieswvtfSx9LuMOd9/NPT64TiGEEPNhWX+KEEKIDDM7gyTisTCzTBpOAPczs1Ak5xPAR9z9vKZtuns2Ha9Y35cAHyz070nAvyaZhne9u++b2V2ANW23pB//sGGRW0mkLeOLCsf/J3Cf3OOH5H5+LnAB8DQSEfoCIH8dXtP2J0kE9Ppc25+M7LcQQoiZoMiQEEI04zuAPeAxJNPHHg88GvhjknVEVfw34G/N7EVmdkYa+XismX1dy368FvgpMzvPEr7SzB4InAnsAp8Glmb2MpI1RWPwJuBHzOxh6XqcFxeOvx+40My20yQO+TVFZwL3AHeQCNO/K5T9FPDFgbZ/G/gJM/tCMzsLeBmwkfsrCSGEaI9kSAghmvE84Ffd/ePu/tfZP5IkBN9NRcQ9XZ/z7STy9BHgdhKhiV0DU+TnSWTjbcDfAK8DzgCuBv4A+DDJ1LC/5+hUtSH4XTu6z9B/SZ//lbQ/f06SAOE/F8r9W5Lo1l0ka3p+K3fs10j6fwtwA0nmvjyvAx6TTjl8S0mffhq4DvgL4ANp+z9dcp4QQogZY+51Mw2EEEKI7liyN9NHgO3Ceh0hhBBiFBQZEkIIIYQQQsySUWXIzC5PN7z7YMVxM7P/aGY3phsAfk3u2PPM7C/Tf1EbHgohhBBCCCFExqjT5Mzsm0j2dvg1d39syfFvA36YZFPBJwKvdvcnmtkDSOaCn0+SUeh9wNe6+10r67wQQgghhBBirRk1MuTufwTcGTjlAhJRcnd/D0nq2ocC3wq83d3vTAXo7SS7pQshhBBCCCFEFFNfM3QOR7Mg3Zw+V/W8EEIIIYQQQkSx8ZuumtnFwMUAW4uTX3uf+z5i5B4JIYQQQohN5u8++6Hb3f0Lx+5HHV+7+Dz/G99rXO5Gv+dqd9+IWVlTl6FbOLp7+cPS524Bnlx4/pqyCtz9FHAK4Mz7f7l/zT+4fIh+Btnfa/4mE0IIIYQQ68mfXPlNHxu7DzH8je/x6pPnNi73v939obP67804TF2GrgReaGZXkCRQ+Ky732pmVwP/Lt3RHODpwEvqKjMzljv1l7x7b7/bX2wtFr3WF4skTAghhBBCiGpGlSEz+22SCM9ZZnYz8JPANoC7/xJwFUkmuRuBzwHfnx6708x+Crg2repSdw8lYsgaZLG9zd7p08HTYoSpDX1LVh1DSZgkSwghhBBi/bEtY3FGi/Hi3f33ZSxGlSF3f07NcQd+qOLY5UCrOW+L7e02xY5RJ1VF+pKsVUtVkb4kS1IlhBBCCCHGZOrT5HrFzFg0HMjvBQbsXaSqqUjl6SJVY4tUni5SJZESQgghhOiGLYztM1uMx+rnY60N85Oh7fAl750+KgtN5QnCAnVQbwuR6iJQGW1EakoCldFUpCRPQgghhBCiyKxkCIPF8vggem/3cKBcJ0vHyp4+Lgp9Rp+O1NtQoPqQJ2guUJInIYQQQgixDsxKhpLI0OGgeO90MuAtE6Qq8uIE8fJUJk0HdTQYqMeKE8TLU1/SlBErT1OUpowm8iRxEkIIIcQ6YluwvO84WY+nwrxkiEQ8MqHIi1GITJogXpyGkCaIFydJ0+qIEScJkxBCCCHE9JiVDGEGNBeKGGnKCxPESVNRmJK26l+SOmGCuGtsIkwwbWnaBGECSZMQQgghxCqZlwwBywix2c2mz9UMYPMyMYQwlclS0tZ0hQnqpalvWYLNECaolybJkhBCCCF6w4zF9tbYvRiVWclQXTa5TCDqhClWlqCZMPUVXUraapY1r4omQhhLTIRpDGGSLAkhhBBCzIuZyRAsFuX2u7e3Hy0QsbIEYZkoikRTWYLhoktjyhKEhWkIUQLJkhBCCCHE3JiVDGFWKjK7p/cqJSljCFlqKhJ9y1KVKCVtDS9LQ4gSSJZCSJaEEEIIkWFbsDw5Lx0oMqurN2CrID37e/tR8hKSpb29fSAsEHl5CLXXNqqUtB84v8eoUtJW3LWG2KSoEoRlaR1ECcKyJFESQgghxKYxLxkqiQzVDVHrZGmKopS0Gx9VKhMlUFSpTzZdlECyJIQQQqwbZsZiRwkU5oPBMpcxY/d0vegUI0l5ViFKEDf9breYfKGntUp9i1LS3rBRpbaiBNNbq7QuogSKKgkhhBBi/ZiVDJnZgZzs7e0fEaMiXURpP5WcPkQJquWhTUQJ1lOUYiUJJEpTpEqUJElCCCGEGJOZyRAsl/WhwC6iFBNNgmp5OUyusPqpd0m75ef2sUYJhpl6N2VR0hqlMIomCSGEECNixvLErHTgGLO7+sXC2NvzSina3d2vFZEqUVrFtDtYjSh1iSYl7VdIVYUkQbUorWLaHTQTweg6lcyhNRIlIYQQQgzNrGTIzFIJ2g+cFYgIBURpCtPuILyPUoam3WXtzW99ElSL0rpIEkiUhBBCiCljZs8AXg0sgNe6+2WF418EvAG4X3rOi939KjN7IPBm4OuA17v7C3NlXgF8H3B/d79vX32dmQwl/4ejQlZ6LBRNqqMumgThCI2m3TUXpTpJStobbn1SF0kCTbvrgtYnCSGEEHGYwVbNVivN67QF8BrgW4CbgWvN7Ep3vyF32k8Ab3L3XzSzxwBXAecCfw/8W+Cx6b88vwv8AvCXffZ3djLUVmhC0aS20+42LZoUam/V0+4UTeqXTRAlRZOEEEKIlfAE4EZ3vwnAzK4ALgDyMuTA56c/fwHwSQB3/5/An5jZlxYrdff3pPX12tlZyRDQKvKzu7uvaFJJ/0DRpMO25pnEATZ72p0kSQghhGjMOcAnco9vBp5YOOflwNvM7IeBzwOetpquHWdeMmTGctnGJjcjmpRJh6JJ04wmgZI4TA1Fk4QQQmwytmUsT7SaJneWmV2Xe3zK3U81KP8ckjVB/97MvgH4dTN7rLuHFvYPwqxkyCiPDCViUi5Ju7s+mWjS2JnuYBrRpKIkJe12jyYNkekuaU9rk4oomiSEEEKsNbe7+/kVx24BHp57/LD0uTwXAc8AcPd3m9lJ4Czgtr47Wse8ZMg4Jj31srM6SUqYVqa7KUaT1mHKHWhtUhsUTRJCCCFWiBmLwHdvS64FzjOzR5JI0IXAcwvnfBx4KvB6M3s0cBL4dN8diWFWMgRwbDzeatpcF8JCo2jS8f7BvPZNStrT2qQiiiYJIYQQ08fdd83shcDVJGmzL3f3683sUuA6d78S+FfAr5jZj5IkU3i+uzuAmX2UJLnCjpl9B/B0d7/BzF5JIlX3MbObSVJ2v7xrf2clQ0lk6PDx7m6JHKXs7R+PIh2WUzRpyGhSXlwUTSq2p7VJRRRNEkIIIaaFu19Fki47/9zLcj/fAHxjRdlzK57/18C/7q+XCaPKUMSGTK8C/kH68D7Ag9z9fumxPeAD6bGPu/sz69uDZSoju3t+RIzyhCQJUDRp4GhSlyl3Wf+g/0x3fUWTkvaV6e6gXm0wG0SiJIQQYiiG2Gdo3RhNhmI2ZHL3H82d/8PAV+equNvdH9+oTWCxgL29QykqxyuPDBFN6kb/me7GiCYlx7Vv0tyiSaANZrsgURJCCCG6MWZkKGZDpjzPAX6yU4upiwTGD0FRCkWTkhMCxwLRpClNuwtFkxL63zcJ6qfdrcvapHx7GZs+7W4u0STYDFGSJAkhhBCHjClDMRsyAWBmjwAeCbwr9/TJNL/5LnCZu78lptFQJHB3LyxKBzZVWnYzpt2F0LS7zZl2B+1FSdPuylkXUVI0SQghxAFmLE/MKoXAMdbl6i8E3uzu+W/qR7j7LWb2xcC7zOwD7v5XxYJmdjFwMcADH/xF4SluLUVpqGl3wNqI0hDT7uqQKB2ySlEaetodSJTGQqIkhBBibowpQzEbMmVcCPxQ/gl3vyX9/yYzu4ZkPdExGUp3wz0F8MVffr4vF8fFZHfPgkJSJ0ohJEogUZIoJW1JlMqQKAkhhBDjMaYMxWzIhJl9OXB/4N255+4PfM7d7zGzs0hS872yrsEkm9yhfOzuJTJRJkj5cyRKMUiU8uVBonS8rfDHjdYoHWcTRAkkS0IIMVWSbHJtx3CbwWgyFLkhEySSdEW2EVPKo4FfNrN9khHzZfksdCG2tmA/HX/XSVDMOUOJUoJEqf86w8xVlJJ2C4kfJrJGKWlPolRkXUQJFFUSQggxXUZdM1S3IVP6+OUl5f4UeFzT9jIF2KoZR+/vhyUIEhEaUpS6JHMIiVJSeeDYhERpudxid7dciJZLKo/V1TsUXUUpq6OrKMGhPPSR9S5pN16UkvZLolATFiVoL0shUYLhZCkkSrA+sqSokhBCjIhtsdgJf49tOuuSQKE3llsBgdlPRCAkS7FRpS6i1J06oQnIUmD8tNgx9ir8Y7k0dnfL610sjL298mOhcgnrE1Wqo25oGhNVqpsa2CSqFCNmGUNHlUKiBONPvwPJ0lhIloQQQgzJrGTIzFmUyNBeKkEhUYJElvqIKtUx5vS75SJJE17JAFGltrK0WCwC5dpFlUJ1Dk3d0LTulzVWlvqIKmXtZYwZVYLxZWnTpuDBZsiSREkIIUQds5IhOCo8WSSoTJDyxMhSTFQJ6mWpLqqUMPRUtnZT8JYk65XKCEWVhqNdBKitLIUErA+GlqU+p+Bl7UG/UaWk/enJ0qZFlWAzZKkuqgQSJiHEvDGDrZrvwU1nVldvhTF+TCQI4mQptq46WVrWrfeJYjhZSqI4oTP6l6UhpuBlg9dVRpamLksxDBFZkiyl9bQYlNfJEmgaXh2ahieEEPNmVjIE8VEgWK0sZfWtYhremLIUmobXRZaAUvFZpKnL12EaXp0sLRZbB9GbNqzrNLymIrGOsgSbF12qkyVYD2FSdEkIITabWcmQAYut44PJvf3DAd5YshRb3ypkKRGWamFabBGc8paUrz4eEqY6WYJpRZeGkCVoF7Gqk6Xl9ha7pwMv3PbiWIa5I+WrSzakvqa907u1sgTtokt1spS0X4hGRSzSqxKmOllK2lN0qYx1kCWQMAkh1hgztrotRF97ZiVD4Cy39tndP2oUZYJUJBOmOrFJzo2TG0gEJ7bOqPoioj6rmIrXRZiGjC5Beb/aRpfC5arFZplucDZEdClUbydhqpElWN1UPGgmTH1Hl5L2JUxH6h1AmGKiS7Ae0iRhEkKIaTIzGUpYRsiPhClcz3LhwehRck77CFM2rmwjTIdlN1eYlulvbpsIUxdhWm6nZQPClByvHtTtLLbYDwpZvXSlZ9ae0bcwwaFMTFGYkjbDYjCmMMF40rQpwgSSJiGE6JNZyZAZLKx8gLznRwftUxCm5Pz49UaxdcYQI0w7W36w71JbhhYmoFSaYoQJyqVpSGEqK5sfvBbLZmKTlGsmTV2FKSlbLU1dpuTVCVM8q5+SB82EKelDLioVOV1hyChTUzFswljSNLcoE0iahBD1mBlbkZ+Pm8qsrt5wFrbHnh//IqmSpDxthAmOSlOMMEHzKFOMMCV9Wa00xQhTXZTpUFzKz8nW9LeRpkxQoLk0xQhTWb9C4pPv0xSiTCERq6s3RpigfZRpJ62/a5RpsdjplJiiyFBRJuhPmlYZZQJJ01hImoQQY2FmzwBeDSyA17r7ZSXnPBt4OUkq4j939+emz/8B8PXAn7j7t+fOfyRwBfBA4H3A97r7vV37OisZylhY3Ad/UZpihOmwbD7RwrDS1HeUqXe2DpNJVLHO0pQfk4akCY6LU1tpOtqfYrSoe5QpKbtfOF59rEv0Kp+hrkxKViVNoTqSfsZJ02J7GZ1BLpZVSBMcF6dYaUrarL7mWGmC5uI0dWmC6YtTrDRlSJ6E2CCs+WdAbZVmC+A1wLcANwPXmtmV7n5D7pzzgJcA3+jud5nZg3JV/CxwH+CfFar+GeBV7n6Fmf0ScBHwi137OzsZKhOaYsTn8Nx20lTVTnnZ5tIEh+I0hDQ1YbnltaIDSYRrr+68dEwcqm8nvYaQOGXZ9KqkaAqRpqR8QRpyP4ekqdi3vPwkZQ/rzfcn6dPhsVC5pGw7wYmVpqb1xkoTVIhTTiTailOMNCV97Vec4tdRJTIRK00wH3GKlaaDunuUpybiBJInIcTa8wTgRne/CcDMrgAuAG7InfMDwGvc/S4Ad78tO+Du7zSzJ+crNDMDngI8N33qDSRRJclQH7SN+ByWj/+gX3W0CRJxipUmmI845VOQl4nRUXEped0Lac6PRXaOlD/efmy0KSk/XXEKCU5f0aam9Q4tTju5+uvEqaqOw76OJ05tyORp3cQJJE9jIXkSYnacA3wi9/hm4ImFcx4FYGb/lWQq3cvd/Q8CdT4Q+Iy7Zx94N6ftdGZWMmQ4i63wh+zefvhDe5XilNRx2J8mbefbH1KcEmo2P2pBE3ECwvK0AnFKzqHynCbilJQ/+vi4qITKVosTHJWnVYhTvmzZ4DUrWxScpNxhh5bL6mNNxOl42aPHi2KSFycokadCFKaNPDURp7I+HjsvlY2x5amNOMFReWoiTkmbkqc6Nk2eQAIlRGvaJ1A4y8yuyz0+5e6nGpRfAucBTwYeBvyRmT3O3T/TpjNdmJUMxVAnS2VUCVRbeTlax2rlqYk4tSHJDhcnT1GikxIjT/loV2Wdua5V1bdTiJqVCVRx49uiHB0XmP7kqSgqEJanpHwqJMcPHchTUZzy/SoToKRsJkFlfcokqH95KopT/liXepOyx4/n5aSrPO0U6q+Tp7I6Dvu6U9rHY+cNJE/JnlirGaRmAtVUng7Kl1x7U3mCeIFqKk/Qn0A1laeMKUtU2zUPkighWnO7u59fcewW4OG5xw9Ln8tzM/Bedz8NfMTMPkwiR9dW1HkHcD8zW6bRobI6WzEvGbJuclFFU4HqS57guEA1vb6kjkWn9qciUE3lCcLRouJUwb4Eqg95Kp5TMj4/GuUpLX/4c0igmsoTdBeosv4kffKacuW/W0m58vdQSKCy46F6k7LVAlUmT0nZtN3tin5lElWy/qdOoOC4RMUIVF6e8n08dl5BOEISFRv1OtqP9ZWoNgIFcRLVRqAO6u9BpNpKFExXpLouHJdMCVHKtcB5afa3W4ALOVzrk/EW4DnAr5rZWSTT5m6qqtDd3cz+EHgWSUa55wFv7aOzs5Ihq9lItIwuclFZZ4voE5RLVBuBgaMS1eYakzoW7dpvIU/Lrf1j+zpVcZgAIV6gkvNrNpHNnVslPVECVdKtYn3F6BMcl6iiQMFRQaqamZSdUzFGP5SVyvLl8nRQfi9U1oMfOru75QKV9atvgYK6awlLVBuBiqk36Ve1RNUKFNRKVJlAwVGJKtt/aaoSdZhavmk2usWxzXFj2dvdG12iYPNFCjZXpkBCJcbFzNjq8PlQhrvvmtkLgatJ1gNd7u7Xm9mlwHXufmV67OlmdgOwB1zi7nekffpj4MuB+5rZzcBF7n418CLgCjP7aeDPgNf10d9ZyRDAwtpFMfY8fl1MW7lI2qn+YG0rUXBcpMaUqOT3okWpxV5l5r8y8hGrGJHKjw3rRCo2alRMZR4rUaV1tpQoOCpSZRIFh5I0RYlKyle/ZxdbofeFVWYGBFhU3I+kT4E2A9dy4sQiWLZqM9u6ekMSlZQNf75VSRSEI1HJ8eT3vUqi4FCkqjaxLUpNUaIyijJVJhxVIhUrcEf7kc+c2GSdUHuR6kr++ruIFNRfcxeROmijo1B1lSnYbKECSZWYFu5+FXBV4bmX5X524MfSf8WyT6qo8yaSTHW9MjsZaktbicqIlakuIpW0UzEFryeRaitRB3W5dbrGhcVNXTxWbrF30H4MXUQKqmUqSnoO+lAS+SmcW5X1L0akivXViVSVREEiSnVr5MPCAnt15QN7TJ3YOZ6Rr0iVTJ3YsdKNcxPSDXBLfv1PnEjrLdkAN6NKiE6c2Kosd+JE9ea5GVUydeLEIihaUC1pJ06EJe3EyWVt4obKvaBStgIilbG/t18pU0kb6bS2CpHKyPe1KnpTJlSxIndQd+n6s5hITSHpR0OpypJSlG2qOyZV196HUB200VKs+hCqIlMSrL73iskj0RKbzKxkyIAFHWWjbVSjo0xBnFB1lamknUIUqYNIHdS5335dUkltrUtmf3RvIlSZSB20HiFUxXVUIaGqjrQcPxArP6HNdfMCFEqhflBnzdtud98qRSpjfz8sU1CdpS/jxHbNOdvl0nJQHitNcQ6JTEE7oTqRTusrF6rqTXUzmUrKNhOqEyfy+zF54Vj1/lB5ysQnX7ZcjMKidiiIFbJ2Mk3U0EGqdk5uR02bC22ye9BOhJxlfa2bDpcXq5DMQdVUw9C0ykCGwYq2mshVPttfV7kactPhwzb6ndJz0E4LyRpCsDLmIlplSL5WiBm24td3asxKhvqgq0xltJGqPoTqoP2AWPUhVEkbuYhSD0J1QE368xgWlnzJNJl2d1j28OdYqSoKVUzbVYkpysQqNKYrSlXdHlKZBIWE6rAvFrUnVUxSi51lfUbAnW0Pbrh70K8KaTqxHT5OboxVGg3KyU1xzHiiEKgIfZcXpepEYZ3UUbGqTn8OR6UqKRsnVnmhKiubF6Ni2ePljnaqWPa4HIXrPiqKJdJ28vCrq6tYJeeEP59ixIpISdvb249aZ9RErqBsCmK4THUEJyBlsQkwSsLEXSSrSbbDpuTvw1CSddBWQ9kaUrSKTEm8YPXyVYaEbD7MTIacrZZCsd9gzVAMfUlVniaC1adYHbRfuEd9SdXRNha9itWC8sQU0eXt6BdIE7mqWhpSm4CjRKxC7ddl+yvKVcQfyw8EK1aEYsQKYBEhTVmdIXaW4WyBO9vh7H5FyuTpxHbNOYXj+fH0CY7Xlx8rFsUK4qNWRbE6OL4LRbEq9q0oVodlw4JVJlb5skU5ypcNsbu7X1n2UJLCdVdf0+ELkperw/LNJSuTq8NzOkSwcnXF1LNzsr7PeZqIxeHUxAYb7R6L5sSVDQlXzH5VTaWryRTKrrRN8tEHdSK2SvEKMSUpm4KQrYIkgcI0Xv+xmPfVN6CtRMXQl2gNIVgZMaI1hGAdtJ/eoyEE63A9UQ8Rp8LjNqJVFKyDuiJEK7D2vno9WUCuqtqOTaeebOIbdWrSl8iMgRl1UpQfB8ds4ltVZyZXeY4lr9g+fk4T0SrK1bFzav5oXXcv6saI4fGZBRJYhKYJpnXX3Idq2YpZP1UT6YwQri7Hu9YfIzB1a7GScxqK18nqN9Sx1O0nq+vsXcBybbXdDLiLbLTdKPhIHTW/bG0yEHaVsxiRHUPSimTRuT43JRaijlnJUNmaobZrgPpkSNEq0la8hhStImWvyZCilW+jSdbAqDpLp8e1XHdWc7xOvKok61g9pZv/RhXN1ZGuEYsQrSPlWu5ZFZPkohhsid38Nzm3JDJU2Zdm0lUmWsX6ykSrSJfpg3HnVCeTOF5H+PjxMVdhmuAxwQhNIyypv5F8VW/AG1e+pP2RBSymjqSe1YlYwom4KYdpnSEJK9JEyiAgFzVtthU06CgbZySfYENkL+y611ZUGw1lrmuGxMp+TED4xPSYlQyVscpBfhWrFLJVilcZMTI26mvSfAlRY6rErquIxUV4IiJ8Ddst3/+q3V8x26zhAtjJ9pZqIpotEmOUURSxcI6zZhKWnB/fry7Rry719S9igfTidaIT8fGxV9OXUBp3qJcx6BINS8t3FLK4OiJEJ0qq+pGzpK5YWYr/LisXmPI/Z8TKWrjuME3F7UjZjhGiLjJXRrRcnFH3yVhS94rT1k8tM+MqsQ6R0E1gVBkys2cAryYZf73W3S8rHH8+8LMku9cC/IK7vzY99jzgJ9Lnf9rd37CSTg/AFISsir5FbWwZqyKTtDFfi9AUwL5ehzYRtjpJaxr9KW8jjSR1rulwoNBlLVieOknaiVljlZe0BverL0GLamsCktak3lWLWux58ZGzmlTzEW+TOmmDfsQtqae7fPVZT1JXAyGKlrH4jKdN2k/qbv7520T6jpZr/7ncVAj7br+MLgIZVf8Aa8TE+jCaDJnZAngN8C3AzcC1Znalu99QOPWN7v7CQtkHAD8JnA848L607F3hVp2tHtec7PewxmTqTFnUmhISiqlKWsYWcf3rO9EH9JhdMHD/B5kGuZXMOe976mMZ9RGp5l+0nWQuV7StUB3pS4fPuikLXVJmGKkbsu4YwYN4yYs7N36a5GGdcec1mbkUI4AH5zb4tWt0XRFCd6z+Bv1u20abdo622e1zuGv5PF2uo4o++xdiaHET/TNmZOgJwI3pbrKY2RXABUBRhsr4VuDt7n5nWvbtwDOA3x6or6X0KVZzZZVCuUliV0Uv+0wNNG0zVuj6Zjs3xhtCFgGw9ot9K+/31rALiKchiS3q7CniB+OLYtc+tBHGg3Zblm0ieHmaiuRY7cWKZmmbQaGsm5rZw3uxh4/YvmeKDbVEp4kUd2pnDgEjM2w5bFr5qTOmDJ0DfCL3+GbgiSXnfaeZfRPwYeBH3f0TFWXPGaqjYjgklNNja4OlcX8CCVOKbDNS1qSWY6/Rk8700PxgUtyBMe/rKsT4sK3VXWef4lzbVg9i3ay9Md8vq73WEF3+ICBExtQTKPwu8Nvufo+Z/TPgDcBTmlRgZhcDFwOcffbZB88v9ueg+0KIPIsW09Wi6nV9nojmbPnm/uFhEmzgOPlg7DIdHxmX6f19S6whY8rQLcDDc48fxmGiBADc/Y7cw9cCr8yVfXKh7DVljbj7KeAUwFc+7rEuCZo3GrQOzxwGeOvyObK1P53XYmt/9RGwrRW+TkPe6yHvnQ3Qb9vrv7/D1DnMa2Z7A77vBn5P26rnhU3hM2p35nsamSmb3IhtXwucZ2aPJJGbC4Hn5k8ws4e6+63pw2cC/yP9+Wrg35nZ/dPHTwdeMnyXNxMJQr9sogxMefA/5oB/lQP8oQb2fd+/Pu9J14F61wF0l/JtB9qtBtIt3hutBr1NX4+mg8w2g9Km97lFG97itfS2m4a2lBHvuNjHOwpB1/bz7A+U2a3N69iUfW0Wu5aMJkPuvmtmLyQRmwVwubtfb2aXAte5+5XAj5jZM0lSMd0JPD8te6eZ/RSJUAFcmiVTmDKSjn7YNNmYqmiMJRmrEIx1EIu+7kMXoegmA83LthGIxvLQ4LVvJAyx97nJoDP23Nj7FlFf7IAxerAfcQ9jB9KxA/bY+mIH3U0G0U0Gw/v3Nnvv7rf4/WjaBsB+B7HpQ2T27u3ns29/wOxxu/dM83u7FWawnPqqmWEZ9erd/SrgqsJzL8v9/BIqIj7ufjlweR/9kKR0Y5PkRGJSbHc9xWRqUjKGkKxCRoYSkVElJOa8qE2A+hGPKOmouV8xchAjGjH11A2GY645VihiBvqxAhErDU1EoYkYNBWANgP9LgP4LoIEsNdCyqrYvWe478Ou1ynWk9mp4NzFR+IyLJsqLZsuLJIVhomY9CkqK5KUXgSlo5zUickqpKROSPoQkag6erjWjFjhaCIaTQSj6UC7rUB0kYU+ZGCIqMnevavZmmH376c3rhDDMzsZWmc2RWQkMfl25ysx6xhxWVeBWVt56SG6Mqa41JUdW1i6ykrdwDlGUmIEJVZOYgfhTQb8TYSkjYS0lY8+hKNPwRhSIvZOj7uJ6e7fbcbYqxIzbFv7DIkVI6kZjjGkZh2nks05KjO00KxFNGYiMtM5CjNiBKaLyHSRmHUQmBh56VtchpSWNsLSVlb6EJS+xWRVMjI16Tj9t9PqjxgOyVBPSHCGQRGb2PokN83KjCs3ayk2EfV0itJMNELTJTrTJTIztNT0EZHpU2iGkplViUxXielTYIaUl7GFRYKyPpjZM4BXkyRJe627X1Zx3ncCbwa+zt2vS597CXARsAf8iLtfnT7/o8ALAAc+AHy/u/99175KhmqQ5AzHJkZxJDkl5Va0pmbjpqOtSfSmyzS0KQrOWFGboeWmr2hN35GaIcVm1VLTl9AMJTNjiMy6ysve3evZ7zaYgS363WfIzBbAa4BvAW4GrjWzK939hsJ5ZwL/Anhv7rnHkGy38xXA2cA7zOxRwEOAHwEe4+53m9mb0vNe37W/s5chyc4wSHRi65zG+htFcyLqnJrorHEkZ6jpaUNFcTZdcsYSnDnIzaaIzTpJzZxEZsI8AbjR3W8CMLMrgAuAGwrn/RTwM8AluecuAK5w93uAj5jZjWl9HyfxljPM7DRwH+CTfXR2VjJk7mstPxIeCU8Xpi48axPZ6SvJgKI6pQy1FmdTZaevaM7YkRyJjgSnDInN2nIO8Inc45uBJ+ZPMLOvAR7u7r9nZpcUyr6nUPYcd3+3mf0ciRTdDbzN3d/WR2dnJUPrwtSkByQ+cfVJeuLOl/QcY02lZ4wIz1DT2Lqs0VmX6M6chGfusiPREfEYLFtlkzvLzK7LPT7l7qeiWjTbAn4eeH5sY2Z2f5Ko0SOBzwC/Y2bf4+6/Ed3jCiRDE2Bq8iPxialP4hN3/kDi03cWtrms4RloatsY63fmGunpc0qbpGeYaWyrkp6pC49kZ+O53d3Przh2C/Dw3OOHpc9lnAk8FrjGzCBZD3SlmT0zUPZpwEfc/dMAZvafgf8FkAytG1MTH9g8+dFUt5JyE0xioHU99eU3bZrb1CI+UxefpI5+Ij5TER9Fepoj6RGDYgY9J1AArgXOM7NHkojMhcBzs4Pu/lngrMMu2DXAj7v7dWZ2N/BbZvbzJAkUzgP+G7APfL2Z3YdkmtxTgXxkqjWSoRUgAVq/yE9S5/wEaGMTG8xlytsIkZ+prfGZ8nQ3yU88kp9pIvERMbj7rpm9ELiaJLX25e5+vZldClzn7lcGyl6fZoq7AdgFfsjd94D3mtmbgf+ePv9nQNS0vDokQwMyNQnatAhQUr+mvx0ppwhQob4ZRIA09U0CdNDWvAVI8jMMEiDRBne/Criq8NzLKs59cuHxK4BXlJz3k8BP9tfLBMnQAEiCNA2uLYoC1dSpKFCu7mlFgcZIa73OU+DGSHigdT9xSIIkQLPCWidQ2BgkQz0iCVIkqC2blAhBkaD68usmQaBI0GHdkqAikqB4JEBCTA/JUE9MTYTGQCLUDolQTZ0SoVzdEiGJUNbW+CK0KeuBFAmSCIl5IxnaUMaIConVsqqpcWvBKlNjD0htdrhQ2QaD3iZMSYTqmLII9ckURGhMhkiHPTQSITFZNE2OrbE7IEQMQ6wTEvU03Scomr6jQqti4KjQUNRtjrou1EWFpkyfUaEpoKlxQohNQTIk1oL9LQUxx8D733sgIfL19OWave4z/+uaEEIIsW5Ihnpib2KD9f2tgQaxYjL4ovnAu02ZjaEPUekohzaUXNa1uyGStrUzrc/ZJmwt61/7xRpd32JnnOHDYlvDFiF6Z2vR/N8GoU+VHpm7EO1vDTvg6js61Nf96XrdvuLXqakQNYkO+aLBa9RndKivexgjDXX3o6aOkBDZdk37gXthNYPtkBCFym5tB9oMXMtW4FpCUrPVQRhDwhG6DoDFTvjeby3DX5fLE6v7/F+eiLtHMQJ2WOdq+r88Oa3vyeV9V/P5u33mZg0ehdgkJEM9IyHaHlSKhhCiPu7RWELki+2VRIjWRojq7uNyu154JiBEQSmauRBt7SzDZScsRFvLRa2gxEaHpiBEbaNDXYWo7+jQ3IVoccaCxRnT7JsYHjfDl8vG/zYJydAA7G0tJyVFfQ34m7U5rBBNMUrUVQR9a9FJioYu44tFtBT5YhkvRVvLKCmK/gCOuYcxQlR3zoBCBDVRouWyUopsuQiKTRchqpIJWywqr2dre7tSikJis7VY1EpR5bGW1wGJEIWkKEaIYqQoxGJnGSVFTYQoVopi+p9nsbPVSoqWJ5edpGixvdWrFC3vu1iJFE1ViAAJkZgtkqEBmbsUrSJK1KcU9RklGkOK2kSJ2pVZAynqM0oUOmexCEtRTfmQREBklKiFFNlyu1KK6mSqLkq0SikKlqsRgBgpqiy73FpZlKhOipYnFpKiNZOi7TMXk5UiRYnEHJnOSH2DyYRoKhuzZgP+Ve1FlBeDITZmzYSor/TbeSHqco+y6257zZkQNd2UNS83sfsKtSuT9i8iXXQmRFGbsmZCVPN6ZkIUTL+dvZahe5iXgqoU1Nk5Vcfzg/Wy+1HTRl4gytJvZ0JUuQ9RJkQl9yITm7J9iPJCVEy/nReiYtm8RJTt35NdT9m1ZEJUtg9RJjZlKbQzISrbhyhYLncdZemts2spu468EJXtQ5QXorJ9iPIyUbWPT9a/UOrtTIhCqbfzQlS3D1FMm4f1LtM64z5fMyFqmno7E6K2qbczIeor9XYmREOm3s4L0dT2IcqESHsQzQGLnrK+qcz76ldMPko0BTHqa9DfrM1ughCu+/D+9i1GfUhRUk/z685HidqKUZPNVpuKUT5KVCdG+ShRrRjlP5wDr2c+SlQpRvkoUYwY1UlR6JzsflTdi0gxCkkRVIhRPkpUuBchuUmOp8JV1qeAUIXEKCR5+ShRUYzy0Z6i4OSjREUxCpWDsATUCV4mRlWbs2ZiVLU5a51U1Elb0ofDPsaIUawUhdo8rLNe7PLko0RNxCgfJWojRvkoUR9ilI8SzVGM8lEiiZHYVEaVITN7BvBqYAG81t0vKxz/MeAFwC7waeCfuvvH0mN7wAfSUz/u7s9cWcd7YO5iVJxG1rcc9S1Gxelzbe/RWGLUJvLTptzGiFGTaFHVOXXRopo6YqNF0K8YtY0WwfqIUWy0KOnP0bLF6XNFOWoSLYJysehLjNpEi0JtHtYrMZIYTadfQnRlNBkyswXwGuBbgJuBa83sSne/IXfanwHnu/vnzOyfA68Evis9dre7P36VfR6K4rqiseWor4F/szaHm0pXXFfUtxz1IUZJPc2uu7iuKFaOimuEhppK11aMkvNDU98GEiMol6Pi2poy8WkiRtB4Kl1xHU5RJorrio7JUQ9ilBw/nTtW6FODqXRjilGxbHENTVEEYiNGEBajpO7mU+mGEKOkrerfyVWJEcTLUZ9iBN3lSGJ09P0kOVpjzJplgd1Axrz6JwA3uvtNAGZ2BXABcCBD7v6HufPfA3zPSns4EnOXo1VGjZL6u93fIaJGST3t5aht1AhiRadZmWLChd6iRsV5zhWvZTHhwqByFCNPdXJUU0cTOQqKERyRozrBaStHxUQFeakIXUsx4UJejoKCU6izbdQIjspA6DqgWdQoqfvogLwualQnbkkfjtbRVY5i2jyssz7qVaRN1KiYcGHsqFEx4cJQclRMuiA5EqIfxpShc4BP5B7fDDwxcP5FwO/nHp80s+tIptBd5u5vqWvQzVp0c3wkR5KjpJ4G09tKMqkNGTkaUo7K/mJVKUiSI+CoUJRlozsiSDOXo7JsdLGRo6nJUbF/SR/WR47KstHFCFJZNromglSWja6LIEmOJEdivViLuJiZfQ9wPvDNuacf4e63mNkXA+8ysw+4+1+VlL0YuBjgnLMfyr4d//LY8vX6JZUcHR/c9SlIQ8tRUmfzezSVaXUQIzvNypSl6m4iSNFyBKWCVJaqu1SQhpCjsnNWGDmCGjmCA0EqS7mdl5xVyBEcXk9Zqu5MkEKSU5aqOyRIbeUo6c9h2aHlqK5/SR+O97FMkNrKUVmbh3WWSEtDQVpV9KjPaXVlqbqHEKSydN1TEaSydN0SpKlgjTZW30TGlKFbgIfnHj8sfe4IZvY04KXAN7v7Pdnz7n5L+v9NZnYN8NXAMRly91PAKYCvfNxjvawj6y5IZXsZjSlIfQ3+m7U5nCCV7WU0BUHqes1jR4/qyjURpE7RI2gvSGV7GRXvYYz81J1T9kWVvxc15UNCAf1Gj+BQdMr2MsoEKVSuTiqaRI+Sst0EKViuRgZC11K2l1FekMr2MsoLUoxctIkeJf04Wk/ZXkZjCNKmRo9AggQSpE2iY5K05wE/kZ760+7+BjM7E/jjXBUPA37D3f9l176OKUPXAueZ2SNJJOhC4Ln5E8zsq4FfBp7h7rflnr8/8Dl3v8fMzgK+kSS5Qm9soiDBeJJUtZnpkJK0akFK6m9/f4cSpKSeyCQJLQWpauPWMSNIsxQkOJSkqs1eMxmpKJ+JRVCQqja9jYggNRWkrGzVBqn7p3drr2UKggSHQtBUkOBQkqo2e80kqWqj1LxgDClISVslGfpWLEhQL0lVm73GSlLVZq9tJalqs9e+Jalqw9cpSFLVhq+SpAExa7z5en2V7ZOkmdkDgJ8kmRHmwPvSsncBj8+18T7gP/fR39FkyN13zeyFwNUk1ni5u19vZpcC17n7lcDPAvcFfseS9T5ZCu1HA79sZvvAFsmaoRtKG+qRMkECSVIXVh1F6ioL9fX3G0XqSyK7iGGZIEF7SWojSKFyVeH9MkmqyphTKklVm9AVXs8yQYKCJFXcwyOSVCMv0ecMGEUqEySokaSAIEEiOmWClBzrFkXqc4odJLJTJkiQSFKoHISFICR7MHwUqU7gkj6U97GtJMW0eVhnveQVmVIUCfqVpFVFkUCSJFrRJUnatwJvd/c707JvB54B/HZ2spk9CngQRyNFrRl1zZC7XwVcVXjuZbmfn1ZR7k+Bxw3bu3gkSf1SJQAwnCgNKUmriiIldcbfnyGiSFAvSX1GkULlJEm5c0aIIkEqSS2iSFAvSUNEkcoEKSk3nCS1iSIlfdodLYqU7x+slySNFUWCfiWpKooEiiSBJGkCdEmSVlb2nML5FwJvdPfS5S9NWYsECutKlSTB+ojSlCQJVj/drkoYkja7iVKVJCV1t7u/Q0pSUk/E2qCAzIZEKRSmD0+dm5EkwaEoVQkMHEpQW0mCRJRq2qgSC0jkopUkAezu9i5JkEwjqCI0HA2WO316pZIEiRS0kSRIRKlKkpK69ysFAw4lo65/UC1JST8O3++rlKSk3rL9oqrvSUiUqiQJ5jvdDsYXpSpJAonSMdpPkzsrzeqccSpdp9+w+dIkaXVcCHxv07aqkAyNxLqLUpUkgaJJQ0aTkvqb39++7s86iVLTMqFsOkVRCm1Qd0yUAq9lXpSqJAkGiCbFiNSAohSiTpTabpAwhigFuTdwbCfQlxpRCrFuolQlSUlbuSQVEe3lWRdRqpKkg7YbylIomgT9ypJEaRbc7u7nVxzrkiTtFuDJhbLX5Mp8FbB09/e17nkBydAE2WRRgtXLUkgEoH9ZCglD0t60Ikp93R+JUnZu+P1/RJb6FKWa15H9GoGBRIRmKEp1rIsodWGTRClpb6+2vXybGX2KElTLUkiUoLssTXnq3bqKEkiWGtA6SRpJLoF/lyZLA3g68JLc8eeQWz/UB5KhNSMkSiBZasOqo0pDylJIlJK6x4kqdb3mkChBtSzVhf7LxadZmbr9GVpHlWpey0yWQqIEkbIUO/UuRqY67lfRRWhCk8dtuTySErwvgkPh7eWxjVgzFovFsf2fDurc3j6yoezR9pZH9j06RktZ2loughuo1hP+HV7WDDd276mPeO3v7gVFCfqNKmVtZoREKalXUaWuhEQpY0xh2kRZcuq/YxvX2SFJmrvfaWY/RSJUAJdmyRRSng18W5/9lQxtGHWyBNMXpinJUl3UBNYrslQnS0n98fe3r/sjWcrOrX99DoSpT1mK+SLs49uioyzZcvt4CvL88YBgQHtZsuXiyCaxx/rE0Q1m8ywCZVctS1tnLI5sLnvs+E6gbI0sbQWuJWE6slQXVUraax5ZaipLdVElKBemuqgS1AtTnSxBM2GqkyVYnTBNRpbuHq0bk6BtkrT02OXA5RXHvrivPmZIhmbIugtTnSzBZgtTnTgk7U0nutTHNLyu1xzzV68yYYpZVHpcfpqVidn5u4kwRcsSwP5urSxBpDDFTMNbASFhqpMltrePbjZ7pN70PrUUprayBJRKxiJ935RdT5YVr0yYttKv/TbCFJIlCAtTnSwtdo6mCi+ys9w5kiq8jL4+9ZsIU8z6reye1MlSUqeEqSsx0SUYf0qemA6zk6E9Cyz893EypE0RCVO/bJIwxUSXkvrj7m/MvUnqC98fCdNeem7c62N7uz0LU0SjMV2rif7UHock+lQxoD/IRBcQJiiXDKC1MGXJG8rEJya6VFV21cK0lf7lOyRMlWXT65AwHaeJMCX1Hl7J3IQJVidN8xAmi/r+3GRmJ0MhQqKUR9KUECNMMF1pihEmWJ009SUF8e3FffgNKU19T8lL6qy+P12vOXZedVGaYtOWHhWgZmVihCk5P16aooUJ8KjTlkcz41WfVnM8QojqzgkIE9RHmCAsTECpNMUIEzSXpq7CBMevJ7/vUlGatnIvUlNpihEmKJemrcC1QCJMUC1NO8udtO7AAP3EMriZa9bPbmusjhL7SdhWmmKECY5LU4wwQViaYoQJpilNijLNA8lQC2KlCSROEC9NME1xipUmWI04TVWakjabiVNslCmpe3WRJklTIk2xUSaIT3zQmzTtpNcRep/XRIFqj+fvVcmg/sh+RyV1WEA0yIlGUJrgmDiFpCnfp6I0LQoRimPilNu7qCgbQ0jTVm59RUiaSstGSlPSp7LEBsn/XaUJqjd4zfoZI02LneWxTWrLaPINs7+7N5g0wVFxipUmqBanWGmCeHGKlSboJk6l0nTn8aemiJtFf29uKpKhgZE4NUPi1B9NP9z6kKd1Eqcm96fq3jSdWlC85iYZfPLi1GSDvEMJalYmVpqS8+PFKVqadpbHNqwtJ1KcukhTzDnZ/aqbnldSR1CaIChOVpzCmLsXxX2VehOnwoavedlYFN43+evZKmzCmxenrcJwpIk4FTevbSJOxc1rj0lgLjtfa3HKCUlXccoSRPQtTk0Gg6sUJyiXpybiBHHytCpxEtNDMjQhmogTSJ6aiBNMT56aiBNMS542SZyS+sP3ti+x7HLNTVOfZvLUdGfxRISGmz/ui8WxdOOVLJbHN7EtqzMbDAdfx+ScoDjt5O5x1Xu8Jhp0LIlE2TmBiJPVlC/u0RSKOMFReepLnJLjh/WOLU5wVIC2CumP8/K0KnGCcnnKxCmpv2SA3kCcyvp4tD/x4sSJxZGU4yF2Gk4R3L1nt5E4wfSjTk3ESUwfydAa01SeYN4C1VSeYFoC1VSeYDiBahNS7yJQbRZ3NhGoKcrTKqNOMB958vxgOEKeICBQq5CnYoSuT3naPv66ZfJ0TJwgKE9wKEHH+sShPBXFKV+uKE5wKBxFcYKwPCVlkzZD8lQUJziUp6I45ctBedrtvCR0lae8OCV1h+UJygWqbkrhYX8O66oVqDR5RIxANZWnhObfXXv37jeOOsFxgWoadYJ2m9xOB2v8HbhpzPvqZ0gbgYL5SpQEqj82SaDafHGEBKqPe9P1ettsumf7e4OKUIYvtkv3fCo/N7mOKIFKp/b1I1BH3xOlArVTuMdl7+86OSpLX54/p2x6Y+5elIlKvnxRniAnHSXCAXECVSZPkIhQaZ9IBKpMnrJyZfIEcQJVJk9J2dOl8gSJCJXJE8QJVFVWuUwUivKU9CefNe542cYCVbKGqE6g8n0sEi1Qucx7sQIVarec1QkUHJWoNgIlpoNkSEQhiYqnjUDBdCSqjUDBMBLVdlFnW4lqm140RqLa/uWtSqL6uDddr7fvXctDNBGi7Hwo3zj3+LmH11ErUbm1USGJGkyg4LhE1QlSG4GCA4mqkpWsjjKBglQ82ggUwO5u7wKVla1i//RuqUBBci19CxQkElUmUAdlA9eyv7tXKlBJn7J1PeVl8xJVFKik7uYS1Uagkr70I1E7kRGwPMsT4emIVXSRKDE99EqKQWkrURlzkqm2EpUxtky1lSjoX6S6ZMZpI1Jd9mioE6ku0xfKRKqPe9P1ettKlG8tSvd6CpZpIEVNz4+WqEJyiSqJ8rJBcenvxvHzjolUnUTVCE7UOR0kqkqgICxRAFTs8wRgu2ERquwTYMvAPmSBwXXoWra2Q/JVLVEA+4F6h5KopF+7rSUqqT8VqYpMdnUSlfWxyNQkKql7A8Yopn2GJENi0kim4llnmeoiUtCvTHVNMdpUprp+CYVkqus88KJMjS1SAG0nozQVqfz0vzgxOnpdoTJlmfoqZaokS1+ZTMWJVPn74YhIlUkUNBOpgHCwe7paogD2wsISJVIVGOVpzA+OB0QKqoVo62T1hrmhcouTJ8KbzJ4MX0/ZhrkAnHGidA+ng3I10c/9e0NyF/5MCYkUJDJVJVFQL1JwKCB1wpdRlKjDvpTco5KNdEMytRMZDRPTRjIkNpquMpUxB6nqKlMwnlB1lSnoT6j62K+hiVCti0z1dV86Xe/WdqtNhLNI1trJVEW686JMlYoUFGSq+r1wIFNVIgWHMlUnSqHjEBYp6qc5hkQK2suUcaJ0I90jdZfth3QyO9ZOpqBiH6Ws3gFkCkJCFS67PONEUBhCcgjrKVNi+kiGhIigL6mCzRarPoQKxpGqPoQK+pGqvjbAi5GqvqZHlElGXxmKMqkafWPA9F41FaritMAYqSpLTBEWpPjzq/aQOiYSgb2j8kJVKVOQE6rwe8F2d8MyBYlQ1clSaK8ogBMng+cYVO4VBWA15aFaQLI9tko32SWbd7U6oYqRKWghVGek9baKToXL1slU0qfwPdxahuPL+7v7QZmCRKhCMrVOOBP4bB0ZyZAQK6ZPsYLNlKu+pCpjlXLVl1RldJGrPr/g6sSqzznnRdmYWtrX7L62znaYu1dNxKqpVFVl+quWpMB6mkKZ0Ka8R6SqZjPeTKqCQpUR8btgMe/5nZPVqdAzQsJz4mTwnIONhaukqKZ8RpmE5DctPrYBbyZUEJSqohhtnSwej5eqTKigJHV4D0IFbaSqXqigfkpbSKq273OichNesX5M6xtmYByb1NoEIfqgb7mCzROsvuUKVidYU5Grvv9yGBKJvhfz5oVjo8SqcJ9ixaosgUWfYlWXbj1fJiRVybnNxCpeqmrO2zkR3qAX4qQKqqXnxMngOXnxKRMrqymfJy8jVjwWkiqIFqsmUpUvmxeqjCMpxYv1xorVGUfrbT71Lyxky7ywrfVaoe5j43Vn3lffglW8YSRcYmyGEKyMTRGtIQQLhpesIT7D2nxmDTEto0oohpKrPsUqq6tuQ99wHUfvaSPBKrlHMXJVlRkwJFfNIlD9iVVy/l6tVB2wFfla1L1mO8mgOShXO+mIv61cdRCrI1JVVX+OkFhBLm16UaqgtVglx+sjViGxKkoVtBcraDsNUEwRydAEWbWhS77EKhlStGD9ZWsoyYLhRGvIz6wmn09DzXvvY4PbuHZOT0qwyu5ntGAF7lFIsurSrhclK2bT36PCFH9+jFwl509MrnZyo/42clUjR8cEqCe5KhMr6C5XTcUqK1smVtBersR0kQyJ0cKjkjAxBEPLVsY6SteQogXDyNbQn08xn0NDLi7uYxPcOvZbZtErr+vo69FGtFYtWVMQrGKZMCfqN/8FfDurt6Nk7RwO+ss3/i2M+psKVlGOCsdLJSgffaopXyRGrkrFCgaTqynjZoN/N0wdyZAYDUmYWGckXcdZxRdq38I1dlRr3UWrL0aVrBUIFjSNSsULVp8RLN/uQa5g1OjVpORKrAWSITE7xl4oKBkTTZB0HWWdoltzEK2pR7O6StYqBQvCktVGsNpMEdx4uWq45qrvaYFzwcyeAbwaWACvdffLCsdPAL8GfC1wB/Bd7v7R9NhLgIuAPeBH3P3q9Pn7Aa8FHkuSFfyfuvu7u/Z11FHhEDdKiKkjGRNTRNKVsC6ytamitQ7RrHUSrHWRq+jEFn2su4oVqz6SWawJfX/+m9kCeA3wLcDNwLVmdqW735A77SLgLnf/UjO7EPgZ4LvM7DHAhcBXAGcD7zCzR7n7Hokz/IG7P8vMdoD79NHf0UZlA94oIUQATU8UYzL3TIXrkOZ9zHTuQ++NNcR+WH0kvdjfWvaSSbBLBsG22QObZg5sko697/2tmm0W3MNGwfPlCcCN7n4TgJldAVwA5Mf4FwAvT39+M/ALZmbp81e4+z3AR8zsRuAJZnYD8E3A8wHc/V7g3j46W/sbbGaPKQgKZvZkd7+mY9u93yigc6hMCDEMQ0mYJEtk9CFa6yBURboK1pTTuY+x6XCsULQVqyrpaCNVRYFqc81dpjxu7Z+uXT/VBV9sRyeeiDk3L1PBJBWpTIWm+B3IlL6DyjgH+ETu8c3AE6vOcfddM/ss8MD0+fcUyp4D3A18GvhVM/sq4H3Av3D3/9m1szG/eW8ys18HXgmcTP8/H/iGjm0PcaOEEDNDGymLPmkiVOsoTmXEytSqNhrOE/v73efvcYxQtNok96D+eumIXS8VI1B1Eae66+2yQXLZdfSd3a/J1L3YfakyUfKIjX5Z8w1Lvf2mq2eZ2XW5x6fc/VRP3SpjCXwN8MPu/l4zezXwYuDfdq14K+KcJwIPB/4UuBb4JPCNXRteFWZ2sZldZ2bX3XnnnWN3RwgxERb7uxIh0ZpNEaFYxhChWDbt97ivNOhJXePdmzbXEZpyV3p+dLryZufG1bdZ77sW3O7u5+f+5UXoFhJ3yHhY+hxl55jZEvgCkvwAVWVvBm529/emz7+ZRI46E6OCp0lCU2eQRIY+4u77PbTd5EbdHHmjjpG+OKcAHve4x3kP/RZCjMimDXzE+MxNbEByU6RLpCeu/n4H4l0lp8v1tr2WKYhOzP5NyXkR93djvouMfe99quO1wHlm9kiS8fmFwHML51wJPI9kicuzgHe5u5vZlcBvmdnPk+QFOA/4b+6+Z2afMLMvc/cPAU/l6NKa1sTI0LXAW4GvA84CfsnMvtPd//eObfd+ozr2RwjREYmKWBVzFBiYtsRkjPU5MDehSerYLKlpcv6qxaYy+9yReqb/+7kK0qUtLwSuJskYfbm7X29mlwLXufuVwOuAX0/X/d9J4gGk572JRHR2gR/KJUj7YeA300xyNwHf30d/Y2ToInfP5gTeClxgZt/bteEBb5QQAomJGJ+5CkseyUuYoQUmaWN6EpPUM32RgeGmovUqM9CP0LTZo6jJ8Rnh7lcBVxWee1nu578HSgMr7v4K4BUlz7+fJG9Br9TKUE6E8s/9eh+ND3GjhJgCEhExZSQpCesgKhkSljZ1ji8tSflpikvT8ycpL9BdYOrOqbvuNRcgB/aYd4rw9U6BIUQFkhGxbkhQjrJOogLjf+asQliSdjZXWpI65iUuybkTkxfoHoHpIDAeKOun6/qlz/F1RDIkBmXsAYIQXZGklCNZac46C0tSb3/3cKxoC0hcjtQ3hcgLDCYvUCMwgev33YAUhfoTKCemiWRoRkxhMCBE30hWylk3WcmYwueUpCVf13pFW2BYcUnOX/10MdiMqAsMF3lpKy91ZfdPB9psILLTxdj3mJ12NhfJ0MhM4YtfiKGQqISRsLRnVcKStCVpqWPdxSU5V/JSxhiRl+R4u+hLW3nZrxGx/Xur693fCCmaL5KhAFP4whdiFUhawkhaurPu0ZakbslLm40rZzVlDEafNgbjRF+S45shMKFyAPs19yF0PWJ6zEqGDJ/U4ECINkhc6llXeYHpCMwmRF6SuiUwaykw0N+CfZh1BAaGW/8yhMR0icB0kZg6gdm7t0a8dveDx6eKssnNTIaEGAPJSxwSmO5IYKrqk8RUn69IDLCWkZgx1sG0lRgYLxJTJzFJ/WGR2b2n/r1a10cxXSRDQpQggYljnQUG5ikxSXvrITJ93ZdNFJkmEpOcL5GpYi5rYpKyq4/IdJ1S1kdEpi+Z2auRtsP21ue70TH2lEBBiM1CIhOHRKY/FJGpqm/ciAxIZirrk8ykda9+eplkplj/6qIyQ8iMIkLrj2RITAqJTDySmf5QZCZU33pOMYM1zVQGEpqy44rOaJoZ05CZmGsR64VkSPSOhCYeCU1/SGhC9SlCEz5/4utmYDUJAGAt184kx6eTxWystTNTmG42VoRmFUKzd+96JkioxWHPlUBBiFIkNfFIavpDUhOqT2towudr6tkBE43UgDKbweZMPRs7UrNqqdn9++l8V4r+kAzNAElNMyQ2/SGxCdW3vmID05MbRWymF7GZS7YziU23dg/rXT+x2Tu9odGimSEZWjMkNs1Yd7EByc1wdUtujpRVwoC0vunLTaeoDcxCbsaK2mxy5rOhp6JJbMbBMfb2NU1OjIwEpxnrLjiSmyHrn57gaK1Ndq4SCIRYt2lpm5RAQJGbOFYZuZmq3Oz+3XqPP0Q5kqEBkNw0Y93lBiQ4w9YvwTkoJ8FJ65qI4NTUMcUIjtbdJEwlmYAEp2HbPQuO5CZhz23sLoyKZKgBkpxmrLvkTElwYLMkZ4qCk9QjyUnOnbnkzCiKA6uXHEVx8u2t9xS1KQoOrE5yTv/teo9zRIJkCElOUyQ5/bJJkpPUPz3RkeTkz9danBBKNDBOJEeSE8ecJWeVURxJzrCY2QOANwLnAh8Fnu3ud5Wc9wfA1wN/4u7fnnv+KcDPATvA+4CL3H3XzJ4MvBX4SHrqf3b3S+v6MzsZkviEkej0yyaJTt+Sk9Qp0QmfL9E5gkTnsJxE54BNEB1NV5PojIVjY+wz9GLgne5+mZm9OH38opLzfha4D/DPsifMbAt4A/BUd/+wmV0KPA94XXrKH+fFKYbZydCckej0yyaJTlL/9CI6ST2bmV0tOX8mqaNjztHUtcNyLUUHhpm6NmTq6HVdm6OITjwSHVHCBcCT05/fAFxDiQy5+zvTaE+eBwL3uvuH08dvB17CoQw1RjK0QUh2+kWyU1efojr1ZSQ7B0xUduoSCkxJdqa4T46iOusV1dH6nGHYu3u6fZsoD3b3W9Of/xp4cIOytwNLMzvf3a8DngU8PHf8G8zsz4FPAj/u7tfXVSgZWiMkO/0i2amrT5Gd+vOVlOCAicoOTCuyk5RdbVICRXbatXlY53xlR1GdhE2WHffW2eTOMrPrco9Pufup7IGZvQN4SEm5lx5t393MPLbR9PwLgVeZ2QngbUD2Av134BHu/ndm9m3AW4Dz6uqUDE2IdZcdkPDMUXjWKbrTppyiOzkkPIflNmgq26ammZbwxKHITsImC89A3O7u51cddPenVR0zs0+Z2UPd/VYzeyhwW5OG3f3dwJPSup4OPCp9/m9y51xlZv/JzM5y99tD9UmGVoyEp38kPHX1KcJTf74iPAdIeI6WnVDa6SEjPEn93aa0SXhybUl4JodkZ1JcSZL04LL0/7c2KWxmD3L329LI0IuAV6TPPwT4VBo9egKwBdxRV59kaCAkPf2yauFJ2lyfzGxTEB6Y9hqeWWVmizlnotKzKWt4lJmtvp6pbCQq4WmOpGeTMHb3t1bd6GXAm8zsIuBjwLMBzOx84Afd/QXp4z8Gvhy4r5ndTJJC+2rgEjP7dhLZ+UV3f1da77OAf25mu8DdwIXuXjsFbxQZiskvbmaPB34R+HySuYCvcPc3psdeD3wz8Nn09Oe7+/uH7/lx1l16piQ8IOmpr0/SU3++pOcIE5UeWJ+pbZKeUD8kPbXtrqn0SHjEULj7HcBTS56/DnhB7vGTKspfAlxS8vwvAL/QtD9jRYZi8ot/Dvg+d/9LMzsbeJ+ZXe3un0mPX+Lub15Vh9ddekDio+ltzdH0tpo612l6W00dnaQHBtmHpy5KNCXxUQKDrK3xp7cpLXVzJD7zxYG91UeGJsVYMlSbXzyXPxx3/6SZ3QZ8IfCZoTu37uIzd+lJ2lyfaE9SpxIZ1J8v8TlA0Z7DchuUuU3RnvURH0lP/0h6xFiMJUON8ouni6B2gL/KPf0KM3sZ8E7gxe5+T5uOSHz6ReITU+f6ig8o4nNY1wzEBxTxmaj4gCI+0e1IfCaHxEdMicFkqK/84mnKvV8Hnufu2SfSS0gkagc4RRJVurSi/MXAxQDnnP1QyU/PaKpbXX3jT3UDrfEJ1qc1Prm61yfqozU+ZXWsNuqjTG5xrEJ+JD6iLe6wt99qn6GNYTAZ6iO/uJl9PvB7wEvd/T25urOo0j1m9qvAjwf6cYpEmPiqx35F9KZOU0HyI/lpg+QnUJ/kJ1e3srptsvysU9QH2snP1Nb5KOoj+RHrx1jT5Grzi5vZDvBfgF8rJkrIiZQB3wF8cPAerwjJj+SnDVOWn6TMANPeJD/lx2cQ+YHNm/a27pGfpF5NexsKyY8QwzGWDMXkF3828E3AA83s+Wm5LIX2b5rZFwIGvB/4wZX2vkfmLj9JmxKgpmjNT02dqxSgGEEaUICGWvOTHJ+OAA0hPzDt6I/W/KTtzFB+QAIkVseupsmtnpj84u7+G8BvVJR/yqAdHBgJkASoDRKgmjolQLm65y1AtWUlQI3bPKxTAjQkEiAhVs9YkaFZMncJkgC1Y8pT4LT+p4CmwB2WU8rrAzQFrkE7M5QgCZAQ4yIZGpi5C1DS5vxSXyf1KAqUnKsokJIgZOUUBTpex+YkQdiUzU4VBZIEzQl3Uza5sTuwqUiCJEFt2CQJSs5XJCjEXCJBbSUIhokErYMEJf3Y7DTYkqDpIQkSc0QyNABzFyFNh2vHKqfDtSm3FtGgqUhQRB1jrAkKSVBd2SlFg5QUIWtrfBHSdLhmTFWEJEHzxVECBclQj8xdgpI2JUJtmPK6oKSMROiAjiLUKRoEEiGJUNqWRKgvJELT7JcQq2Jr7A5sClMToTGQCLVj1RGh5u1siAjFECNLA9YxZJa4YLtrIkJ1TFmEYpAIrZ65i5AQQpGhjWWMqJCYPkOvEYpmjD8e9CE6He9HXVRoKOqiQutCXVRoyjTN3ibK6TsqJISA/Zn/WikyJNaCIRImiOkTnTBhKmyIdAghhBBzQTIk1oL9LQUxx8AXi2Eqjnw9fTmx173ufiy3g4dtqPtZg9X0a13Y2pnY+6EBW8v6136xRte32Gk3fFie7HaNi+1+hy3L+47zOymEmA6SoZ7Ym9hgfX9LH/B1rPs98kXzAW6bMs3qH+n3IOa1jBGCkaXBtmvaD8ihRQy225Td2g60GZC7rcC1hKRmq4MwhoQjdB0Ai53wvd9ahr8ulydW995fnoi7RzECdlhn8/5LiOLZPnO63zeLM6bbNzE87rC7Z43/bRKSoR6ZuxDtbw07kBwiOtTHPdrf2u507d6hD6sQoqbRoWgh6js6tCohiokOBeqwxSIoEUMJkS23gxGidRGirZ1luOyEhWhruagVlMXOMipCNJQQNZUiCVE822cuJitFizMWkiIxWyRDPSMh6iYG9fUve5eivu5RVyFqK0W+2G4hOM3K+GLRSIoaCVHE6+nLZZwUbS3qpahGVqLOWSwGnTJn29thKVouK6XIlotaKao+Vl12a3tZKRMhwdva3q6UopDYbC0WtVJUeSwgHaHrgESIQlK0tdwKSlGMUPQlRcsTiygpimnvaL3NpGixs9VKipYnl52kaLG91asULe+7kBRJisQKMLMHmNnbzewv0//vX3LOI8zsv5vZ+83sejP7wdyx7zKzv0if/5lCuWeb2Q3psd+K6c+0Ru4bQiZEU0m3nQ32V5lhLhODodJtZ0LUV2KFvu5R1+vOhKhNuu1MbppkjGtaJhOimCxzeSGqTbmdCVHN65kXomByhUyIQvcxk4JQ0oO6c/KD9bJ7khePkjryAlGWaS4TosqU29n9KLkXmdSUpc3OC1FZprlQ2UwkylJVZ9dTdi2ZEJWl3M6LTTFjXF6Iimm3Q+XgMCpSlsktL0Rl15IXorK025kQVaXczstEVdrqUP8O+7FM+1D9fs8LUSjtdl6IYrLbZdcQm3Y7L0RNUm/nhahN6u28EPWRbS4vREOm3s4L0dRSb+eFSPsQbTbZNLkV82Lgne5+mZm9OH38osI5twLf4O73mNl9gQ+a2ZXAPcDPAl/r7p82szeY2VPd/Z1mdh7wEuAb3f0uM3tQTGckQwOSjxJNQYzyEZBViVE+WjKEGOWjRH2IUV/3qOt156NETcUoH/GJl5xmZfJRol7FKB8lihSjKCmCajGqEZboc7J7UnU/OohRPkpUKkb5KFHhfuQjPU3FKFQ2JBOha8lHiVYlRsWoSFEEuohRMUpUJkd1YlTXv6QPR7+uq+RoCDEqRoli5GgKYgTd5agYKRpKjoqRoinJUTFSJDkSPXAB8OT05zcA11CQIXe/N/fwBIez2b4Y+Et3/3T6+B3AdwLvBH4AeI2735XWcVtMZyRDK0JitN5ilNTZ7j4Vp881vfbi9LkmcrRqMUrKhPvXSoygUo6K0+cq5ag4fa7sPhankJWJT905xaldPUeMitPnjslRcfpc7n4Up8AVBSdWjIpli9PO8kJRnD6Xv57i9LmiHMWKERyVo+IUupAchcQo6dPRssUpdE3lKEYsYkQlRo6KU+iq5KhsCl1IkJrKUXEKXawcFafQSY6mQdk0OgnS+uLAXrtfi7PM7Lrc41Pufiqy7IPd/db0578GHlx2kpk9HPg94EuBS9z9k2Z2N/BlZnYucDPwHcBOWuRRabn/CiyAl7v7H9R1RjI0AsV1RWPLUdmamaEFqWx9TZ+CVFxXJDkqT5xQJzvtysTLUdnaokpB2hQ5gqOCVLaGJ1dH2VqcvFCUrS06IkgN5AgOJadsbVFekJrIERxKReh6ytYWZYJUtkYoLzlN5Chftk4EQtcC/csRHJWLWFEpW19UFKSy9UV9CFLdNRSpWl9UJ0lV64uaSFLZGqMuglS1xqhvSapaYzQVSQqtM5IobSy3u/v5VQfN7B3AQ0oOvTT/wN3dzLysDnf/BPCVZnY28BYze7O7f8rM/jnwRmAf+FPgS9IiS+A8kqjTw4A/MrPHuftnQhciGZoAZUkXJEhZm/0IUlXShS6S1Nc96nrdZYkXpiRIZYkXehGkqsQLhde0KvHCMUmqSrywXyMucFSAYs4ZU5CqElGk96OpICXHT1cmXsjK9ilISdnTlUkU9u/drUy+kElSsGzFtewHriXp025l8oVMkkLJFzJRqkpekAlGKBlCXliqEjDkJSmUgKEoSnX3JU/dNZTRtyRBnCiFkjC0FaVQIoY+RakuEcMUZKkuIYNkaTNx96dVHTOzT5nZQ939VjN7KBCczpZGhD4IPAl4s7v/LvC7aV0XA9mb6Gbgve5+GviImX2YRI6uDdUvGZooVVnpxpSkqqxrQ0pSVYa2qUpSX/eo63VXZaaLkaSqLHNh4WlWJpSZrkyUqrLTbZQkhbLT7e2Fs9Ptng5mp/O9vWB2Oj99OihJoex0vrvXSpIgnM40NAT1vb1WkgTAvdWH9vf2WkkSJEJQl7q7ilhRCmV4ayJKoSx1bUSpLlNdXpbqstSVyVJdprqQLNVlq6uTpZhsdU2FKSZjXV/CFJO1bmxhis1eJ2kaCIeIfCp9cyXwPOCy9P+3Fk8ws4cBd7j73Wm2uf8VeFV67EHuflv6/P8BPDst9hbgOcCvmtlZJNPmbqrrzKxkyM3Yt4rBqq/HL1kodfdYohRKTT2UKIXSWPchSqH03W1Eqa97VJe+u+7a69J3h2QplIq7Wnpq0kuXlGsiSnUpvI/IUiiFd+41rUvhfSBLoXuZ3ce6FN67p2slBxhXlKprBiCUg8iWi9KkDTEEh6Dby9JEBwCLxaI0m11cm8vSrHQAW2csjiVt6IutwPUcEv7dXtZ8ne/eE5Y5SKQlZo+jvXt3o1J6Z8LUpywl9RbXcUUIS4UwxaT2nqowQT/S1CTN95ji1DTlt+Rp0lwGvMnMLgI+RiozZnY+8IPu/gLg0cC/T6fQGfBz7v6BtPyrzeyr0p8vdfcPpz9fDTzdzG4giRZd4u531HVmVjIUokqSMtZBlmL2OFq1MNXt4TOELMXs99NFmGL2OWoiTDH7HMXep6FlCcqFKWbPonLxaVYuZq+jvDDF7Hdke7tRex0BsL8btd+Rxb78dVUtt8Opv2POWSyqM9yRm/pWUUcoXTYANem/baD034tAWQLZ4RY16cyDKcBzL9ixpAy5gVqZNHVJA570qzqlOcAiXT5clgYcYGe5c/BzVTpwIlNpby0XUam5FzvLYErww3YXwcx3RZoOXHbv2W28D1JentrshVQUqLb7IdVJVNt9kdpKVNf9kVYpU33ulySx6pdUUJ5a8vx1wAvSn98OfGVF+edUPO/Aj6X/opEMRVInSxlTl6bYTWFXJU1NNjztU5xiN0htK02xG8PGSlNf96nJxrBV1x67OWxRmpps8npUgOLKZWWabA5re3vRG8Q2kSaP/mRdhlODA+yk19Nlz6QmqcGhVJ6s455JBNKDWyDJQ3K8OllDcYpeUZwWoQx6gcxxi5p1WaFMeFslX61Hkj0UBmmxyR6ge8IHOBSnjKJA5cXpsI3CoDwyo1xM2vCkT3Gpw5O249KHZ+xE7OdUZHkiq7/td2G34VUmU31sKlsmVH1uLttErIbYbHYVgtVKrO7uvx9D4AT/XjYLJEM9EytNGVOVp1hpyliFPDURAuhHnprIQ9JmM3mKlabD+uvvc1/3qeu1x0pTnkygmojTqmiy4SypYNVuNgt4NgisfW1zKcmrBGqncM9HypBXuoaoJgEE5GSjYtpeJlHH5OmgjW7rm4riVCxblKeM/dO7pfJ0UDawxikpX/25sX/v7jF5OnI8sM7poHyHtU6ZSBUFKs/evadLBeqwjdxgPGLdE8Qna4hJEnHYdkXmt4BQ7TRIGpEnk6mj7TTIerdz9H422avpWF9Opu23SE1ex97p/V7FKkSVdA0hWLGMvd5K9INkaGSaylPG1CSqqTxlDClRTaUgo6/NVpu3Wy9STeXpaP3l97rtfUrqPLxXXa49qet0K4HqQiZdsXswNS3TaA+mBmnGvWwAWPr6ltRZFKmiQB3UF5EgAg4lp+6cuojdXrWoZITWPkFgKl9GQDqME6VT+Y7UXzWF7WR2vGYaalVU5GQyci7d8PVkrnzg+iqF6oy07prpatXroerLL7M2agShbl3U9n1OVE7zO1JP1TS/PJ93Ilo+Fjvxn/kHkhWxZgqOilaVWBUpz84X01bdfk8Bo01pKl3Lk+HjfQrY4v79pkXvg+V9F9WRsTtX2xfRHsnQmtJWooqMLVVtJaqMvsSqixwU6TM5QrN2jw8ouojU8fp30zrH+4vcMTps6ttm76Y+s+5Vlaub8ndEriLXR5WKVBmxv087JyKm+qUjptjfhyqpOHEyeE5pMod8xOpEycitbk0WhxISShbhp08nQlVFhGhtBQaWbUUrT52M1MlkKIJ1cE5r6YqvA+KmvG3XJqVIiBGwpM19+LwIK+FQTLbvE3V6oyl8GcXo187n1csO1Ewt/Lz68k36euLM6j61n4IYpksUrQ2L7Yrr+NhKu9Ead9jdq0uVs9nMTob2LHLNjI+7z8+q6EuqiowhWX2KVZG2ojWkLPS1Nqh5u6d7FauMfJ1dN8ntnOK8QyKKVaypgkSe2kwnjI+CHQ766qYGeqEbMdMDj1B8vXeqB5wH4rVT8yfpruKVbzPivANRiplG2UDAgudEyElewqremTEiVSdjMfXUZ8xL64kRph7E7OC8yAUTsfVBM2GIvS8ZsfJ2pI2YaFoFXaWljeiVEZWMowVNknc04v3DVCv6ZxQZMrMHkOwcey7wUeDZ7n5XyXl7QJZG7+Pu/sz0+UcCVwAPBN4HfK+7B3aPaE6sNPXFpsnXUJJVx1ASNqRohQhJ2FhRmf2txSgb8GYMnQkwaaPmr9t9TMHsOq2w7eu/fVQiYjforaLJFMPqcnF/bU/KNe9vZzkL1V0XFTtWd1z/LVbSIEqugGarpCPrjE1j7qdPV8rY0XYjhSlygB0jcU3rhGYC0zTVe4zoHSvTQhS6pIpv096R8j1ubNNUJmNoI5zrinv0r93GMlZk6MXAO939MjN7cfr4RSXn3e3ujy95/meAV7n7FWb2S8BFwC8O1tsVsGr5asq6yNpYEtaUWGkbS8LqGHNT4L7WOIXb6D+y1n9ErVogukbWQhy7h3WLBqLq7Gfg0VXsoL3c9VG+jegl5Vq+3i3fJ3kBDE0dPFKmzWvTQGQ6lWkrBW3aorkcHZRrIUlH6GHE23bfsOP19C8bffWtiiGkS0yDsUZaFwBPTn9+A3AN5TJ0DDMz4CnAc3PlX86ay9DUmbqsrZqucrgu0taU/QZprWPoO9I3rlyGox9jbZrclqGjg23oS6ratb3a12+V938V97UPka1to6PoTq2dpK3V/h4aHeR7KNbss1NMj7FGBg9291vTn/8aeHDFeSfN7DpgF7jM3d9CMjXuM+4Ho9GbgXNiGnVssn9pL2PdBkdzQnK4GuZ0n09vxU8VE0IIIfpib9ykfKMz2EjDzN4BPKTk0EvzD9zdzawqjcUj3P0WM/ti4F1m9gHgsw37cTFwMcDZZ5/dpOjorJO4ifmx75sZ3ZoKe3ErLNaCfe++cWSfjHVv91Z0H/YG/t3c2x+u/j2PnXjXtN5h+jxUfzN294d/z+ytoI3jbQ5732LZnUg/xLgMNtp296dVHTOzT5nZQ939VjN7KHBbRR23pP/fZGbXAF8N/N/A/cxsmUaHHgbcEujHKeAUwOMe97h55w7sCQ2Cp8smDaCLTG1AnTHGPV/FoHqIwWNfg+g+BqBdr69LH9oOcNsMWtsMOtsMEFfVzn7Dv2Dv7rXoV4sy0P6v622XuvQxQ66PlMp9Lr4fMkKxu7u6IeDezFNVrxtjhR6uBJ4HXJb+/9biCWZ2f+Bz7n6PmZ0FfCPwyjSS9IfAs0gyypWWb4MG+evFJg/8M6YqABmb/Bd2yUD/7beRgKYC0HRQ3mRA3qTu2HpjB/dNBuix58YOPGMH67GD89gBeJNBdvS1RA2ID89pMqhtOthuO2DebZkmu2056G9w36UPRfYGNKfdkTdzXSVJNrl5y9tYMnQZ8CYzu4hkW6pnA5jZ+cAPuvsLgEcDv2xm+8AWyZqhG9LyLwKuMLOfBv4MeF1csybhyTEHmYDpCwVIKhrX2eM0na5isYlSMcSgv0m9Y4hEzDkxY68YcYjaiqhm8BkWhaRsVH8jBkExA+G+6knqinthY89rJjTxg+Cmg/E2A+zd0x3SX3eQhS7t5hlKWPZWkNmtr3sgps8oMuTudwBPLXn+OuAF6c9/CjyuovxNwBOG7GPfzEU8YPryMeZrsc5rBuYc1ZB8xInHqqSjD+E4LhtHH9dFJWr7WCMHdQP0PuQiZmBfd06cCMVKSaTkREpDk8FqEzFoMwhuO+jvMqjvT1h6ztq5IonYGziVdlQflG57I5jVCn1nPlIydSEBSUnrOmccFZnSNKtNl5I+oiDNhaRwvIOQDC0jXUVkFRLSp3zEDrxjpaPpQL6pbLQZpLaViz5kom+BGFIUxhSAvsVNpGPjma9xmpUMTQFJSkT7mro1avRkVVO3hlwLEisq6ygp0D1yMqSkdImYDCkoQ8tJTHSkbkDfl5QMISRNZKTpYLldJKb9oLgP8ehbNlYhGFMQib2uG8dOjN17FRnaBCRDJayDsIAiK63rnJC0rMN6E0lLu3PGFJaxIirrLCurEJW+JSVWUIaWk7aD7K5S0peQDCUiY8jHusiGJGJCuCuBwtgdWC02mujMIdqStCN56bttyUtEPTViMna0ZYqRlrHEZWxp6SuyElPPELIydVGZqqCsUkymKCSSj0P2JxAhE9NiZjLUnDlIzGCb0UlimrWzJhLTZ6avrhLTdV3LWNPFhoq+dBGNLpEXCUz3dg/bbzFlrEOEpQ95WUdxmZqwzFFWJCXzxcweALwROBf4KPBsd7+r5Lw94APpw4+7+zPT558C/BywA7wPuMjdd83sC4DfAL6IxHF+zt1/ta4/s5KhVSdQkMikdUlkSs5XNAYUjYktl5RtJzJTj8RIYprTVWDWTV6mJC5zkRaJynxwHyWBwouBd7r7ZWb24vTxi0rOu9vdH59/wsy2gDcAT3X3D5vZpSR7jr4O+CHgBnf/R2b2hcCHzOw33f3eUGdmJUNNWeepZdCf0KxjKmSYjtD0nXVsnSIz67guZoypZWPJzCoiMn2uf5mKyGyCxMxFYDZdXiQtYk25AHhy+vMbgGsol6EyHgjc6+4fTh+/HXgJiQw5cKaZGXBf4E6g9kNgVjLk2KCCs+nrZZI6NiuV8hwiNDHnrGOEZoypZlOcZjYVoek7MiOZqalrwEHwFERmkyVGAiMED3b3W9Of/xp4cMV5J83sOhKhuczd3wLcDizN7Px0f9JnAQ9Pz/8F4Ergk8CZwHe5e+2X06xkKJapR2pAU8/Kz998sVGkpp9ySdnVR2rWYcqZpCam3X4G6psendlUoZHMiE3Cvf4PchWclYpKxil3P5U9MLN3AA8pKffSo+27m1nVF+sj3P0WM/ti4F1m9gF3/yszuxB4lZmdAN4GZL+U3wq8H3gK8CXA283sj939b0IXMi8Z8v5ER2IjsamtZ+Q1NVNMDrBJU9DGFhtFa6YjNbC5kZpNFBrJjBC9cLu7n1910N2fVnXMzD5lZg9191vN7KHAbRV13JL+f5OZXQN8NfBX7v5u4ElpXU8HHpUW+X6SCJIDN5rZR4AvB/5b6ELmJUMBJDeSm9p61lhuFLUZdyraKpMErKvYQDe5WYdojSI1/SKpEWJtuZIk6cFl6f9vLZ5gZvcHPufu95jZWcA3Aq9Mjz3I3W9LI0MvAl6RFvs48FTgj83swcCXATfVdWZWMuRYK+nRWpuq89c7tbPW2lT1aTprbRS5kdx0ZVPlRmIjhOgDd287Ta4LlwFvMrOLgI8BzwYws/OBH3T3FwCPBn7ZzPaBLZKIzw1p+UvM7NvT53/R3d+VPv9TwOvN7AOAAS9y99vrOjMrGcqzjoIDiuDMed3N1NI9S3DK2WTBmcq0tKEER3LTH5IbIUQV7n4HSQSn+Px1wAvSn/8UeFxF+UuAS0qe/yTw9Kb9mZ0MxUjIpkVx5iA4MedsWhRHU9Sy49MQHOhfciQ4PdQrwekFyY0Qm8sI+wxNilnJUJJae3XT5CQ5EfWsseSs0zqcMVJCK4oTanfakiPBqUaCI4QQm8WsZKiMKUZykvPXe0PPdZYcWH0kp0tZRXKOI8mpak+SU4UkRwgh5smsZMi9Xn4UzYmoR6JT0h9Fc5LjEp2k/fVMOLCJyQYkOUIIUU2HfYY2hlnJENigCQgkOgkSnZhyEp0yxhAdRXM61qtoTmckOUIIMR4zk6GjrEumNU1dS49PSHTqy6526ppEp6pNiU6neiU6nZHoCCHEtJmVDDnVAqSoToI2BY0pt14ppVexIWif2da0RqdQh6auTRaJjhBi3XH36O/wTWVeMuT9RmKmJjsxMhSUCu2fk5ZTQoIim7pOZ2zRgc2L6kh0hBBCrBOzkqGMucpOUkegrGRHshM6R7LTrh7JziSR7AghhIAZylBeXKYmOzHnTFF2QNPYJDtV7Up2Wtcr2emEZEcIISLw+nHKpjMrGXK3UgFSgoL0+IQSFHSJwkwtQYHW7OTbX53wSHbKkewIIYQQh8xLhgiLj6I7gXonJDyayhY4R9nYmtexYbIDmyE8kh0hhBged2/0R9BNZBQZMrMHAG8EzgU+Cjzb3e8qnPMPgFflnvpy4EJ3f4uZvR74ZuCz6bHnu/v7Y9pexdqdIaM7Sfn+1+50SyO9HsIzp/TTiu4U6tkw4dkE2QEJjxBCiPEZKzL0YuCd7n6Zmb04ffyi/Anu/ofA4+FAnm4E3pY75RJ3f3PbDkxZeDSdbd7T2bR2p2U9Ep7JIdkRQggxdcaSoQuAJ6c/vwG4hoIMFXgW8Pvu/rkujboflRwJTx/lJDxFJDxl7U1XeCQ73ZDwCCHE+uLEjX02mbFk6MHufmv6818DD645/0Lg5wvPvcLMXga8E3ixu99T12hRhmDzprS1FZ76suszpU3Ck7Uv4TmoU8LTCQmPEEKITWUwGTKzdwAPKTn00vwDd3czqxwxm9lDgccBV+eefgmJRO0Ap0iiSpdWlL8YuBjggQ/+olLJWDfhSfqkNTxDr+FZhwxtEp5cnRKeTkh4hBBCzJHBZMjdn1Z1zMw+ZWYPdfdbU9m5LVDVs4H/4u4HI51cVOkeM/tV4McD/ThFIkyc+6jzvWocqCxtytIWPGfNsrRtqvDAONIj4RFCCLGRKJvcaNPkrgSeB1yW/v/WwLnPIYkEHZATKQO+A/hgbMNzX8ejTUcD56yZ8MD40rNJwgObIT0SHiGEECKesWToMuBNZnYR8DGS6A9mdj7wg+7+gvTxucDDgf+3UP43zewLAQPeD/xgTKPZUH+IaW1J2fWXnrGmtWkdT6CMhKdXJDxCCCHEePSwxc5TgJ8jWS7zPuAid981s/sDlwNfAvw98E/dvTZgMooMufsdwFNLnr8OeEHu8UeBc0rOe0q7dg9FaM5RHk1ra9Ze0qamtbWuV9PaWiPpEUIIMSTu8Wuke6T1FjtmtkWSifqp7v5hM7uUZJbZ64B/A7zf3f+xmX058BpKfKPIWJGhUXA/lCBFeZStrbxdRXla1asoT2skPEIIIWZG6y120plh97r7h9NjbydZTvM64DEks89w9//PzM41swe7+6dCnZmVDMFRCdoE4akvqyjP8Tanu5ZHUZ7jbILwgKRHCCHE9HD3tmOPs8zsutzjU2nSshi6bLFzO7A0s/PTGWXPIllSA/DnwD8B/tjMngA8AngYIBnKSCJDR8ViXaRHa3ni2jrarqI8repVlKc1Eh4hhBAz4XZ3P7/q4FBb7KTnXwi8ysxOAG8Dsi/fy4BXm9n7gQ8Af5Y7Vsm8ZIjjwjEl4akvqyjP8Ta1lqdVnRKe1kh4hBBCiDADb7HzbuBJaV1PBx6VPv83wPenzxvwEeCmur7OSoZwL5WfKUV5krLTlR5tRFrWnqI8RSQ9QgghxBowzj5DXbfYeZC735ZGhl4EvCJ9/n7A59z9XpKEbH+UClKQWclQkjHjuKS0FR5YzwQGc43ywGau5ZHwtEfCI4QQQqycrlvsXGJm3w5sAb/o7u9Kn3808IZ02t31wEUxnZmdDFUJiqI8gfMU5WlWh6I8k0PSI4QQQkyDHrbYuQS4pOT5d5NOmWvCzGTIJ5fAQFGerH2t5QEJTxckPEIIIUQzkvX08/7+nJUMgTK2xaAoT66ODYrybILwgKRHCCGEEP0xOxla52lt0J/0SHhydWyQ8MBmSI+ERwghhBCrYFYy5GlQaC7CE9te0uZmT2uT8EwPCY8QQggxLsmmq/P+Pp6ZDPmBaGgdT8T5ayY8oHU8U0PCI4QQQogpMysZwg8lSMKTtS/hAQlPFyQ8QgghxJri3cZ2m8CsZMgLG0vNQXi0hidXr4SnNRIeIYQQQmwi85IhjguQsrQ1LDfh6A4oS1tbJDtCCCGEmCOzkiEKkaEMZWgrtqfoThEJjxBCCCE2jSSBwvqPcbowKxlyrxYfyU7DOiQ7k0OyI4QQQgjRjJnJUNh+p5KkADSNrU82QXRAsiOEEEII0TezkqGqaXJFFNVpWa9EpzUSHSGEEEKsmmTbmXmPQWYlQ850RWfKER1NXWuPJEcIIYQQYrrMSoYyJDlpnZKcTkh0hBBCCCHWm1nJULJm6HAAu4mCA5qu1gUJjhBCCCFmg/tofxyfCrOSoapddiU3x5HcCCGEEEKITWdWMhSbS32TpAYkNkIIIYQQ4jjuvjHjxLbMT4Y6DqglNO2RzAghhBBCiCmxNUajZva/m9n1ZrZvZucHznuGmX3IzG40sxfnnn+kmb03ff6NZrYT1XA6L7LLvybs3rvb278x2d/b6+WfEEIIIYSYN0N5gJmdSB/fmB4/N6Y/o8gQ8EHgnwB/VHWCmS2A1wD/EHgM8Bwze0x6+GeAV7n7lwJ3ARe17UifwjKmwPQlLJIYIYQQQoiZ4O3GkB0ZygMuAu5Kn39Vel4to8iQu/8Pd/9QzWlPAG5095vc/V7gCuACMzPgKcCb0/PeAHxHZLuDCMuQIiJhEUIIIYQQm8KAHnBB+pj0+FPT84NMec3QOcAnco9vBp4IPBD4jLvv5p4/J6pG17oVIYQQQgghJk4bDzgo4+67ZvbZ9PzbQw0NJkNm9g7gISWHXurubx2q3ZJ+XAxcnD6850+u/KYPrqptsTacRc0vipglel+IMvS+EGXofSGKfNnYHYjh7z77oav/5MpvOqtF0ZNmdl3u8Sl3P5U9mIoHxDCYDLn70zpWcQvw8Nzjh6XP3QHcz8yWqRVmz1f14xRwCsDMrnP3yoVaYp7ofSHK0PtClKH3hShD7wtRpCAKk8XdnzFQvWN4QFbmZjNbAl+Qnh9krAQKMVwLnJdmjNgBLgSudHcH/hB4Vnre84BJGaYQQgghhBCiNW084Mr0Menxd6XnBxkrtfY/NrObgW8Afs/Mrk6fP9vMroJkrh/wQuBq4H8Ab3L369MqXgT8mJndSDIX8HWrvgYhhBBCCCFEMwb0gNcBD0yf/zHgIB13sD8RwrQxmNnF+fmMQoDeF6IcvS9EGXpfiDL0vhBF9J5YH2YlQ0IIIYQQQgiRMeU1Q0IIIYQQQggxGBspQ2b2DDP7kJndaGbH5gua2Qkze2N6/L1mdu4I3RQrJOI98WNmdoOZ/YWZvdPMHjFGP8VqqXtf5M77TjNzM1O2qBkQ874ws2ennxnXm9lvrbqPYvVEfI98kZn9oZn9Wfpd8m1j9FOsFjO73MxuM7PSrVss4T+m75u/MLOvWXUfRZiNkyEzWwCvAf4h8BjgOWb2mMJpFwF3ufuXAq8Cfma1vRSrJPI98WfA+e7+lSS7Fr9ytb0UqybyfYGZnQn8C+C9q+2hGIOY94WZnQe8BPhGd/8K4F+uup9itUR+XvwEySLvrybJfPWfVttLMRKvB0Lpqf8hcF7672LgF1fQJ9GAjZMh4AnAje5+k7vfC1wBXFA45wLgDenPbwaeama2wj6K1VL7nnD3P3T3z6UP30OSt15sNjGfFQA/RfIHk79fZefEaMS8L34AeI273wXg7retuI9i9cS8Lxz4/PTnLwA+ucL+iZFw9z8C7gyccgHwa57wHpI9ch66mt6JGDZRhs4BPpF7fHP6XOk5aeq+z5Kk5hObScx7Is9FwO8P2iMxBWrfF+l0hoe7+++tsmNiVGI+Lx4FPMrM/quZvcfMBtm0UEyKmPfFy4HvSVMGXwX88Gq6JiZO0zGIWDHLsTsgxJQws+8Bzge+eey+iHExsy3g54Hnj9wVMT2WJFNenkwSRf4jM3ucu39mzE6J0XkO8Hp3//dm9g3Ar5vZY919f+yOCSGq2cTI0C3Aw3OPH5Y+V3qOmS1Jwtl3rKR3Ygxi3hOY2dOAlwLPdPd7VtQ3MR5174szgccC15jZR4GvB65UEoWNJ+bz4maSndBPu/tHgA+TyJHYXGLeFxcBbwJw93cDJ4GzVtI7MWWixiBiPDZRhq4FzjOzR5rZDskixisL51wJPC/9+VnAu1wbLm0yte8JM/tq4JdJREjz/+dB8H3h7p9197Pc/Vx3P5dkLdkz3f26cborVkTMd8hbSKJCmNlZJNPmblphH8XqiXlffBx4KoCZPZpEhj690l6KKXIl8H1pVrmvBz7r7reO3SlxyMZNk3P3XTN7IXA1sAAud/frzexS4Dp3vxJ4HUn4+kaSRW8XjtdjMTSR74mfBe4L/E6aS+Pj7v7M0TotBifyfSFmRuT74mrg6WZ2A7AHXOLuml2wwUS+L/4V8Ctm9qMkyRSerz+0bj5m9tskfxw5K10v9pPANoC7/xLJ+rFvA24EPgd8/zg9FVWYfk+FEEIIIYQQc2QTp8kJIYQQQgghRC2SISGEEEIIIcQskQwJIYQQQgghZolkSAghhBBCCDFLJENCCCGEEEKIWSIZEkIIUYqZ3c/M/o+x+yGEEEIMhWRICCFEFfcDJENCCCE2FsmQEEKIKi4DvsTM3m9mPzt2Z4QQQoi+0aarQgghSjGzc4H/x90fO3ZfhBBCiCFQZEgIIYQQQggxSyRDQgghhBBCiFkiGRJCCFHF3wJnjt0JIYQQYigkQ0IIIUpx9zuA/2pmH1QCBSGEEJuIEigIIYQQQgghZokiQ0IIIYQQQohZIhkSQgghhBBCzBLJkBBCCCGEEGKWSIaEEEIIIYQQs0QyJIQQQgghhJglkiEhhBBCCCHELJEMCSGEEEIIIWaJZEgIIYQQQggxS/5/qXvzLAgJWH4AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 1080x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Load the .mat file\n",
    "mat_data = scipy.io.loadmat('Allen_Cahn.mat')\n",
    "\n",
    "# Following is the code to plot the data u vs x and t. u is 256*100\n",
    "# matrix. Use first 75 columns for training and 25 for testing :)\n",
    "\n",
    "# Access the variables stored in the .mat file\n",
    "# The variable names in the .mat file become keys in the loaded dictionary\n",
    "x = mat_data['x']\n",
    "t = mat_data['t']\n",
    "u = mat_data['u']\n",
    "\n",
    "# Use the loaded variables as needed\n",
    "print(x.shape)\n",
    "print(t.shape)\n",
    "print(u.shape)\n",
    "\n",
    "X, T = np.meshgrid(x, t)\n",
    "# Define custom color levels\n",
    "c_levels = np.linspace(np.min(u), np.max(u), 100)\n",
    "\n",
    "# Plot the contour\n",
    "plt.figure()\n",
    "plt.figure(figsize=(15, 5))\n",
    "plt.contourf(T, X, u, levels=c_levels, cmap='coolwarm')\n",
    "plt.xlabel('t')\n",
    "plt.ylabel('x')\n",
    "plt.title('Allen-cahn-Equation')\n",
    "plt.colorbar()  # Add a colorbar for the contour levels\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "66c2eef9",
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch\n",
    "import torch.nn as nn\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import scipy.io\n",
    "\n",
    "\n",
    "# Define the RNN model\n",
    "class RNN(nn.Module):\n",
    "    def __init__(self, input_size, hidden_size, output_size):\n",
    "        super(RNN, self).__init__()\n",
    "\n",
    "        self.hidden_size = hidden_size\n",
    "\n",
    "        self.rnn = nn.RNN(input_size, hidden_size, batch_first=True)\n",
    "        self.fc = nn.Linear(hidden_size, output_size)\n",
    "\n",
    "    def forward(self, x, hidden):\n",
    "        output, hidden = self.rnn(x, hidden)\n",
    "        output = self.fc(output)\n",
    "        return output, hidden\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "e147c7bc",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import scipy.io\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "# Load the .mat file\n",
    "mat_data = scipy.io.loadmat('X.mat')\n",
    "\n",
    "X = mat_data['X']\n",
    "\n",
    "mat_data1 = scipy.io.loadmat('y_pred.mat')\n",
    "\n",
    "u1 = mat_data1['y_pred']\n",
    "\n",
    "np.set_printoptions(threshold=np.inf)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "86851f53",
   "metadata": {},
   "outputs": [],
   "source": [
    "u1 = u1.reshape(101, 201)\n",
    "u1_new = u1.T"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "c1c08f1b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import scipy.io\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "\n",
    "X, T = np.meshgrid(x, t)\n",
    "\n",
    "# # Define custom color levels\n",
    "c_levels = np.linspace(np.min(u1_new),  np.max(u1_new), 100)\n",
    "\n",
    "# Plot the contour\n",
    "plt.figure()\n",
    "plt.figure(figsize=(15, 5))\n",
    "plt.contourf(T, X, u1_new.T, levels=c_levels, cmap='coolwarm')\n",
    "plt.xlabel('t')\n",
    "plt.ylabel('x')\n",
    "plt.title('Allen-cahn-Equation')\n",
    "plt.colorbar()  # Add a colorbar for the contour levels\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "e3407a46",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<torch._C.Generator at 0x7f4e64370790>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Set random seed for reproducibility\n",
    "torch.manual_seed(40)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "bd999911",
   "metadata": {},
   "outputs": [],
   "source": [
    "# data = scipy.io.loadmat('y_pred.mat')\n",
    "u1 = u1_new"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "7b9ff6cd",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Toy problem data\n",
    "input_size = 201  # number of columns in a dataset\n",
    "hidden_size = 32  # number of neurons\n",
    "output_size = 201\n",
    "sequence_length = 80  # number of sequences/ number of rows\n",
    "batch_size = 1\n",
    "num_epochs = 20000"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "3fee3b80",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "test data shape (201,)\n",
      "input data shape (201, 80)\n",
      "Target data shape (201, 80)\n"
     ]
    }
   ],
   "source": [
    "input_data = u1[:, 0:80]\n",
    "target_data = u1[:, 1:81]\n",
    "\n",
    "test_data = u1[:, 80] ### Change here\n",
    "#test_target = u1[:, 81:101]\n",
    "\n",
    "print(\"test data shape\", test_data.shape)\n",
    "#print(\"test target shape\", test_target.shape)\n",
    "\n",
    "print(\"input data shape\",input_data.shape)\n",
    "print(\"Target data shape\",target_data.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "5a0c64c6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "input tensor shape torch.Size([1, 80, 201])\n",
      "Target tensor shape torch.Size([1, 80, 201])\n"
     ]
    }
   ],
   "source": [
    "# Convert data to tensors\n",
    "input_tensor = torch.tensor(input_data.T).view(batch_size, sequence_length, input_size).float()\n",
    "target_tensor = torch.tensor(target_data.T).view(batch_size, sequence_length, output_size).float()\n",
    "\n",
    "print(\"input tensor shape\",input_tensor.shape)\n",
    "print(\"Target tensor shape\",target_tensor.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "cb49608e",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Convert test data to tensors\n",
    "test_tensor = torch.tensor(test_data.T).view(batch_size, 1, input_size).float()\n",
    "#test_target_tensor = torch.tensor(test_target.T).view(batch_size, 20, output_size).float()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "e517a104",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 10/20000, Loss: 0.0517245791852474\n",
      "Epoch: 20/20000, Loss: 0.0203288793563843\n",
      "Epoch: 30/20000, Loss: 0.0079253995791078\n",
      "Epoch: 40/20000, Loss: 0.0038117209915072\n",
      "Epoch: 50/20000, Loss: 0.0024056276306510\n",
      "Epoch: 60/20000, Loss: 0.0017239056760445\n",
      "Epoch: 70/20000, Loss: 0.0013392085675150\n",
      "Epoch: 80/20000, Loss: 0.0010649255709723\n",
      "Epoch: 90/20000, Loss: 0.0009231757721864\n",
      "Epoch: 100/20000, Loss: 0.0012289109872654\n",
      "Epoch: 110/20000, Loss: 0.0006978128803894\n",
      "Epoch: 120/20000, Loss: 0.0004500685899984\n",
      "Epoch: 130/20000, Loss: 0.0003886869235430\n",
      "Epoch: 140/20000, Loss: 0.0003341803967487\n",
      "Epoch: 150/20000, Loss: 0.0002944543375634\n",
      "Epoch: 160/20000, Loss: 0.0002712428104132\n",
      "Epoch: 170/20000, Loss: 0.0002522529393900\n",
      "Epoch: 180/20000, Loss: 0.0002386904670857\n",
      "Epoch: 190/20000, Loss: 0.0002279277105117\n",
      "Epoch: 200/20000, Loss: 0.0002187901991419\n",
      "Epoch: 210/20000, Loss: 0.0002108923799824\n",
      "Epoch: 220/20000, Loss: 0.0002061335253529\n",
      "Epoch: 230/20000, Loss: 0.0019017840968445\n",
      "Epoch: 240/20000, Loss: 0.0004711434012279\n",
      "Epoch: 250/20000, Loss: 0.0003197517071385\n",
      "Epoch: 260/20000, Loss: 0.0001966239215108\n",
      "Epoch: 270/20000, Loss: 0.0001733584504109\n",
      "Epoch: 280/20000, Loss: 0.0001672569633229\n",
      "Epoch: 290/20000, Loss: 0.0001605656289030\n",
      "Epoch: 300/20000, Loss: 0.0001514335599495\n",
      "Epoch: 310/20000, Loss: 0.0001445025263820\n",
      "Epoch: 320/20000, Loss: 0.0001376341824653\n",
      "Epoch: 330/20000, Loss: 0.0001310363732046\n",
      "Epoch: 340/20000, Loss: 0.0001244934974238\n",
      "Epoch: 350/20000, Loss: 0.0001182165797218\n",
      "Epoch: 360/20000, Loss: 0.0001983580878004\n",
      "Epoch: 370/20000, Loss: 0.0001791805552784\n",
      "Epoch: 380/20000, Loss: 0.0001805747451726\n",
      "Epoch: 390/20000, Loss: 0.0001202909770655\n",
      "Epoch: 400/20000, Loss: 0.0000997410752461\n",
      "Epoch: 410/20000, Loss: 0.0000884571782080\n",
      "Epoch: 420/20000, Loss: 0.0000811360077932\n",
      "Epoch: 430/20000, Loss: 0.0000759562753956\n",
      "Epoch: 440/20000, Loss: 0.0000714750858606\n",
      "Epoch: 450/20000, Loss: 0.0000675285336911\n",
      "Epoch: 460/20000, Loss: 0.0000640092839603\n",
      "Epoch: 470/20000, Loss: 0.0000608162663411\n",
      "Epoch: 480/20000, Loss: 0.0000578950239287\n",
      "Epoch: 490/20000, Loss: 0.0000552422934561\n",
      "Epoch: 500/20000, Loss: 0.0000528332020622\n",
      "Epoch: 510/20000, Loss: 0.0000506497963215\n",
      "Epoch: 520/20000, Loss: 0.0000486730677949\n",
      "Epoch: 530/20000, Loss: 0.0000468852776976\n",
      "Epoch: 540/20000, Loss: 0.0000452691419923\n",
      "Epoch: 550/20000, Loss: 0.0000438084061898\n",
      "Epoch: 560/20000, Loss: 0.0000424877034675\n",
      "Epoch: 570/20000, Loss: 0.0000412928529840\n",
      "Epoch: 580/20000, Loss: 0.0000402248333558\n",
      "Epoch: 590/20000, Loss: 0.0000548980060557\n",
      "Epoch: 600/20000, Loss: 0.0008829518337734\n",
      "Epoch: 610/20000, Loss: 0.0004513391177170\n",
      "Epoch: 620/20000, Loss: 0.0002130465727532\n",
      "Epoch: 630/20000, Loss: 0.0001023941513267\n",
      "Epoch: 640/20000, Loss: 0.0000591657990299\n",
      "Epoch: 650/20000, Loss: 0.0000422364500992\n",
      "Epoch: 660/20000, Loss: 0.0000369840236090\n",
      "Epoch: 670/20000, Loss: 0.0000349487781932\n",
      "Epoch: 680/20000, Loss: 0.0000339638972946\n",
      "Epoch: 690/20000, Loss: 0.0000333658354066\n",
      "Epoch: 700/20000, Loss: 0.0000328547503159\n",
      "Epoch: 710/20000, Loss: 0.0000324159955198\n",
      "Epoch: 720/20000, Loss: 0.0000320270046359\n",
      "Epoch: 730/20000, Loss: 0.0000317109224852\n",
      "Epoch: 740/20000, Loss: 0.0000395532915718\n",
      "Epoch: 750/20000, Loss: 0.0003663225506898\n",
      "Epoch: 760/20000, Loss: 0.0001376889413223\n",
      "Epoch: 770/20000, Loss: 0.0000524815550307\n",
      "Epoch: 780/20000, Loss: 0.0000366910389857\n",
      "Epoch: 790/20000, Loss: 0.0000345148546330\n",
      "Epoch: 800/20000, Loss: 0.0000306344627461\n",
      "Epoch: 810/20000, Loss: 0.0000302752996504\n",
      "Epoch: 820/20000, Loss: 0.0000298020368064\n",
      "Epoch: 830/20000, Loss: 0.0000293546181638\n",
      "Epoch: 840/20000, Loss: 0.0000290333446173\n",
      "Epoch: 850/20000, Loss: 0.0000287280890916\n",
      "Epoch: 860/20000, Loss: 0.0000284349171125\n",
      "Epoch: 870/20000, Loss: 0.0000281492848444\n",
      "Epoch: 880/20000, Loss: 0.0000278674178844\n",
      "Epoch: 890/20000, Loss: 0.0000275890379271\n",
      "Epoch: 900/20000, Loss: 0.0000273127243418\n",
      "Epoch: 910/20000, Loss: 0.0000270377095148\n",
      "Epoch: 920/20000, Loss: 0.0000267633440671\n",
      "Epoch: 930/20000, Loss: 0.0000264890750259\n",
      "Epoch: 940/20000, Loss: 0.0000262145003944\n",
      "Epoch: 950/20000, Loss: 0.0000259417101915\n",
      "Epoch: 960/20000, Loss: 0.0000263772126345\n",
      "Epoch: 970/20000, Loss: 0.0004338416038081\n",
      "Epoch: 980/20000, Loss: 0.0002894443750847\n",
      "Epoch: 990/20000, Loss: 0.0000848765266710\n",
      "Epoch: 1000/20000, Loss: 0.0000731363979867\n",
      "Epoch: 1010/20000, Loss: 0.0000293056418741\n",
      "Epoch: 1020/20000, Loss: 0.0000298706963804\n",
      "Epoch: 1030/20000, Loss: 0.0000245441442530\n",
      "Epoch: 1040/20000, Loss: 0.0000240855933953\n",
      "Epoch: 1050/20000, Loss: 0.0000234415419982\n",
      "Epoch: 1060/20000, Loss: 0.0000229579018196\n",
      "Epoch: 1070/20000, Loss: 0.0000226185966312\n",
      "Epoch: 1080/20000, Loss: 0.0000222733997362\n",
      "Epoch: 1090/20000, Loss: 0.0000219417634071\n",
      "Epoch: 1100/20000, Loss: 0.0000216150128836\n",
      "Epoch: 1110/20000, Loss: 0.0000212905415538\n",
      "Epoch: 1120/20000, Loss: 0.0000209673307836\n",
      "Epoch: 1130/20000, Loss: 0.0000206442455237\n",
      "Epoch: 1140/20000, Loss: 0.0000203212512133\n",
      "Epoch: 1150/20000, Loss: 0.0000200037284230\n",
      "Epoch: 1160/20000, Loss: 0.0000206475215236\n",
      "Epoch: 1170/20000, Loss: 0.0004088560817763\n",
      "Epoch: 1180/20000, Loss: 0.0004291668592487\n",
      "Epoch: 1190/20000, Loss: 0.0002296893071616\n",
      "Epoch: 1200/20000, Loss: 0.0000610489805695\n",
      "Epoch: 1210/20000, Loss: 0.0000373244365619\n",
      "Epoch: 1220/20000, Loss: 0.0000237262538576\n",
      "Epoch: 1230/20000, Loss: 0.0000197386070795\n",
      "Epoch: 1240/20000, Loss: 0.0000191648468899\n",
      "Epoch: 1250/20000, Loss: 0.0000181572740985\n",
      "Epoch: 1260/20000, Loss: 0.0000175996610778\n",
      "Epoch: 1270/20000, Loss: 0.0000171092906385\n",
      "Epoch: 1280/20000, Loss: 0.0000167240741575\n",
      "Epoch: 1290/20000, Loss: 0.0000165044020832\n",
      "Epoch: 1300/20000, Loss: 0.0000250161847362\n",
      "Epoch: 1310/20000, Loss: 0.0000661184385535\n",
      "Epoch: 1320/20000, Loss: 0.0000348546127498\n",
      "Epoch: 1330/20000, Loss: 0.0000218702443817\n",
      "Epoch: 1340/20000, Loss: 0.0000167917096405\n",
      "Epoch: 1350/20000, Loss: 0.0000151695548993\n",
      "Epoch: 1360/20000, Loss: 0.0000141432583405\n",
      "Epoch: 1370/20000, Loss: 0.0000137392971737\n",
      "Epoch: 1380/20000, Loss: 0.0000134414667627\n",
      "Epoch: 1390/20000, Loss: 0.0000131058986881\n",
      "Epoch: 1400/20000, Loss: 0.0000128019164549\n",
      "Epoch: 1410/20000, Loss: 0.0000125115539049\n",
      "Epoch: 1420/20000, Loss: 0.0000122478004414\n",
      "Epoch: 1430/20000, Loss: 0.0000129739992190\n",
      "Epoch: 1440/20000, Loss: 0.0001517447817605\n",
      "Epoch: 1450/20000, Loss: 0.0001282508310396\n",
      "Epoch: 1460/20000, Loss: 0.0002345583052374\n",
      "Epoch: 1470/20000, Loss: 0.0001212600327563\n",
      "Epoch: 1480/20000, Loss: 0.0000187279947568\n",
      "Epoch: 1490/20000, Loss: 0.0000230038367590\n",
      "Epoch: 1500/20000, Loss: 0.0000128900546770\n",
      "Epoch: 1510/20000, Loss: 0.0000118731513794\n",
      "Epoch: 1520/20000, Loss: 0.0000109611755761\n",
      "Epoch: 1530/20000, Loss: 0.0000104080381789\n",
      "Epoch: 1540/20000, Loss: 0.0000109518859972\n",
      "Epoch: 1550/20000, Loss: 0.0000464724362246\n",
      "Epoch: 1560/20000, Loss: 0.0000393773043470\n",
      "Epoch: 1570/20000, Loss: 0.0000253157140833\n",
      "Epoch: 1580/20000, Loss: 0.0000159617429745\n",
      "Epoch: 1590/20000, Loss: 0.0000120660442917\n",
      "Epoch: 1600/20000, Loss: 0.0000095784780569\n",
      "Epoch: 1610/20000, Loss: 0.0000088100150606\n",
      "Epoch: 1620/20000, Loss: 0.0000084930461526\n",
      "Epoch: 1630/20000, Loss: 0.0000090128669399\n",
      "Epoch: 1640/20000, Loss: 0.0000294765941362\n",
      "Epoch: 1650/20000, Loss: 0.0003962995542679\n",
      "Epoch: 1660/20000, Loss: 0.0000816167157609\n",
      "Epoch: 1670/20000, Loss: 0.0000293921766570\n",
      "Epoch: 1680/20000, Loss: 0.0000161974494404\n",
      "Epoch: 1690/20000, Loss: 0.0000099178869277\n",
      "Epoch: 1700/20000, Loss: 0.0000082583028416\n",
      "Epoch: 1710/20000, Loss: 0.0000075609332271\n",
      "Epoch: 1720/20000, Loss: 0.0000072732500485\n",
      "Epoch: 1730/20000, Loss: 0.0000070569840318\n",
      "Epoch: 1740/20000, Loss: 0.0000070919677455\n",
      "Epoch: 1750/20000, Loss: 0.0000105239305412\n",
      "Epoch: 1760/20000, Loss: 0.0001684760500211\n",
      "Epoch: 1770/20000, Loss: 0.0011082020355389\n",
      "Epoch: 1780/20000, Loss: 0.0001402145571774\n",
      "Epoch: 1790/20000, Loss: 0.0000691216628184\n",
      "Epoch: 1800/20000, Loss: 0.0000546506198589\n",
      "Epoch: 1810/20000, Loss: 0.0000478327419842\n",
      "Epoch: 1820/20000, Loss: 0.0000207403518289\n",
      "Epoch: 1830/20000, Loss: 0.0000130565567815\n",
      "Epoch: 1840/20000, Loss: 0.0000097392685348\n",
      "Epoch: 1850/20000, Loss: 0.0000071058948379\n",
      "Epoch: 1860/20000, Loss: 0.0000068281483436\n",
      "Epoch: 1870/20000, Loss: 0.0000064867385845\n",
      "Epoch: 1880/20000, Loss: 0.0000062383473960\n",
      "Epoch: 1890/20000, Loss: 0.0000061292730607\n",
      "Epoch: 1900/20000, Loss: 0.0000060702409428\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 1910/20000, Loss: 0.0000108910007839\n",
      "Epoch: 1920/20000, Loss: 0.0006845561438240\n",
      "Epoch: 1930/20000, Loss: 0.0001591861218913\n",
      "Epoch: 1940/20000, Loss: 0.0000766859157011\n",
      "Epoch: 1950/20000, Loss: 0.0000249540607911\n",
      "Epoch: 1960/20000, Loss: 0.0000129984227897\n",
      "Epoch: 1970/20000, Loss: 0.0000095562973002\n",
      "Epoch: 1980/20000, Loss: 0.0000076091337178\n",
      "Epoch: 1990/20000, Loss: 0.0000064259820647\n",
      "Epoch: 2000/20000, Loss: 0.0000058459181673\n",
      "Epoch: 2010/20000, Loss: 0.0000058974715103\n",
      "Epoch: 2020/20000, Loss: 0.0000272343804681\n",
      "Epoch: 2030/20000, Loss: 0.0001222785213031\n",
      "Epoch: 2040/20000, Loss: 0.0000489514386572\n",
      "Epoch: 2050/20000, Loss: 0.0000205013438972\n",
      "Epoch: 2060/20000, Loss: 0.0000089327022579\n",
      "Epoch: 2070/20000, Loss: 0.0000078141292761\n",
      "Epoch: 2080/20000, Loss: 0.0000471993444080\n",
      "Epoch: 2090/20000, Loss: 0.0002623311302159\n",
      "Epoch: 2100/20000, Loss: 0.0000554026846658\n",
      "Epoch: 2110/20000, Loss: 0.0000209361096495\n",
      "Epoch: 2120/20000, Loss: 0.0000110758783194\n",
      "Epoch: 2130/20000, Loss: 0.0000068271715463\n",
      "Epoch: 2140/20000, Loss: 0.0000056296244111\n",
      "Epoch: 2150/20000, Loss: 0.0000051411393542\n",
      "Epoch: 2160/20000, Loss: 0.0000051109977903\n",
      "Epoch: 2170/20000, Loss: 0.0000049485524869\n",
      "Epoch: 2180/20000, Loss: 0.0000058015830291\n",
      "Epoch: 2190/20000, Loss: 0.0000761341289035\n",
      "Epoch: 2200/20000, Loss: 0.0005328854895197\n",
      "Epoch: 2210/20000, Loss: 0.0001350369566353\n",
      "Epoch: 2220/20000, Loss: 0.0000401712022722\n",
      "Epoch: 2230/20000, Loss: 0.0000182911007869\n",
      "Epoch: 2240/20000, Loss: 0.0000107463665699\n",
      "Epoch: 2250/20000, Loss: 0.0000063008292273\n",
      "Epoch: 2260/20000, Loss: 0.0000057161828408\n",
      "Epoch: 2270/20000, Loss: 0.0000057866741372\n",
      "Epoch: 2280/20000, Loss: 0.0000178520203917\n",
      "Epoch: 2290/20000, Loss: 0.0002250026300317\n",
      "Epoch: 2300/20000, Loss: 0.0000552804413019\n",
      "Epoch: 2310/20000, Loss: 0.0000164297216543\n",
      "Epoch: 2320/20000, Loss: 0.0000061717883000\n",
      "Epoch: 2330/20000, Loss: 0.0000061540931711\n",
      "Epoch: 2340/20000, Loss: 0.0000052434097597\n",
      "Epoch: 2350/20000, Loss: 0.0000049172808758\n",
      "Epoch: 2360/20000, Loss: 0.0000064820528678\n",
      "Epoch: 2370/20000, Loss: 0.0001106441486627\n",
      "Epoch: 2380/20000, Loss: 0.0002192495885538\n",
      "Epoch: 2390/20000, Loss: 0.0000773523570388\n",
      "Epoch: 2400/20000, Loss: 0.0000447360216640\n",
      "Epoch: 2410/20000, Loss: 0.0000187144851225\n",
      "Epoch: 2420/20000, Loss: 0.0000084849953055\n",
      "Epoch: 2430/20000, Loss: 0.0000064085779741\n",
      "Epoch: 2440/20000, Loss: 0.0000052353484534\n",
      "Epoch: 2450/20000, Loss: 0.0000046020577429\n",
      "Epoch: 2460/20000, Loss: 0.0000045389620027\n",
      "Epoch: 2470/20000, Loss: 0.0000046164000196\n",
      "Epoch: 2480/20000, Loss: 0.0000073432711361\n",
      "Epoch: 2490/20000, Loss: 0.0001131429744419\n",
      "Epoch: 2500/20000, Loss: 0.0002142312732758\n",
      "Epoch: 2510/20000, Loss: 0.0000735214271117\n",
      "Epoch: 2520/20000, Loss: 0.0001428653486073\n",
      "Epoch: 2530/20000, Loss: 0.0001087187702069\n",
      "Epoch: 2540/20000, Loss: 0.0000321033439832\n",
      "Epoch: 2550/20000, Loss: 0.0000099859953480\n",
      "Epoch: 2560/20000, Loss: 0.0000064406690399\n",
      "Epoch: 2570/20000, Loss: 0.0000053252924772\n",
      "Epoch: 2580/20000, Loss: 0.0000050676985666\n",
      "Epoch: 2590/20000, Loss: 0.0000046553200264\n",
      "Epoch: 2600/20000, Loss: 0.0000044144267122\n",
      "Epoch: 2610/20000, Loss: 0.0000042860274334\n",
      "Epoch: 2620/20000, Loss: 0.0000048513106776\n",
      "Epoch: 2630/20000, Loss: 0.0000408520754718\n",
      "Epoch: 2640/20000, Loss: 0.0006961001781747\n",
      "Epoch: 2650/20000, Loss: 0.0001717781560728\n",
      "Epoch: 2660/20000, Loss: 0.0002429090527585\n",
      "Epoch: 2670/20000, Loss: 0.0000457414898847\n",
      "Epoch: 2680/20000, Loss: 0.0000211655751627\n",
      "Epoch: 2690/20000, Loss: 0.0000123771624203\n",
      "Epoch: 2700/20000, Loss: 0.0000072967682172\n",
      "Epoch: 2710/20000, Loss: 0.0000049261047934\n",
      "Epoch: 2720/20000, Loss: 0.0000044702956075\n",
      "Epoch: 2730/20000, Loss: 0.0000043504583118\n",
      "Epoch: 2740/20000, Loss: 0.0000052699983826\n",
      "Epoch: 2750/20000, Loss: 0.0000612757794443\n",
      "Epoch: 2760/20000, Loss: 0.0003489158116281\n",
      "Epoch: 2770/20000, Loss: 0.0002045629662462\n",
      "Epoch: 2780/20000, Loss: 0.0000762500494602\n",
      "Epoch: 2790/20000, Loss: 0.0000399113341700\n",
      "Epoch: 2800/20000, Loss: 0.0000351658818545\n",
      "Epoch: 2810/20000, Loss: 0.0000069852499109\n",
      "Epoch: 2820/20000, Loss: 0.0000070544406299\n",
      "Epoch: 2830/20000, Loss: 0.0000044154603529\n",
      "Epoch: 2840/20000, Loss: 0.0000050080802794\n",
      "Epoch: 2850/20000, Loss: 0.0000083525819718\n",
      "Epoch: 2860/20000, Loss: 0.0000740708492231\n",
      "Epoch: 2870/20000, Loss: 0.0000818273838377\n",
      "Epoch: 2880/20000, Loss: 0.0000581473868806\n",
      "Epoch: 2890/20000, Loss: 0.0000301732216030\n",
      "Epoch: 2900/20000, Loss: 0.0000061214964262\n",
      "Epoch: 2910/20000, Loss: 0.0000070635419434\n",
      "Epoch: 2920/20000, Loss: 0.0000044513840294\n",
      "Epoch: 2930/20000, Loss: 0.0000040548111429\n",
      "Epoch: 2940/20000, Loss: 0.0000050233616093\n",
      "Epoch: 2950/20000, Loss: 0.0000590700692555\n",
      "Epoch: 2960/20000, Loss: 0.0004239172267262\n",
      "Epoch: 2970/20000, Loss: 0.0001669236953603\n",
      "Epoch: 2980/20000, Loss: 0.0000390851964767\n",
      "Epoch: 2990/20000, Loss: 0.0000139959374792\n",
      "Epoch: 3000/20000, Loss: 0.0000098710834209\n",
      "Epoch: 3010/20000, Loss: 0.0000053533849496\n",
      "Epoch: 3020/20000, Loss: 0.0000041546741159\n",
      "Epoch: 3030/20000, Loss: 0.0000038519619920\n",
      "Epoch: 3040/20000, Loss: 0.0000037263437207\n",
      "Epoch: 3050/20000, Loss: 0.0000039732831283\n",
      "Epoch: 3060/20000, Loss: 0.0000308418784698\n",
      "Epoch: 3070/20000, Loss: 0.0006654160097241\n",
      "Epoch: 3080/20000, Loss: 0.0005175865371712\n",
      "Epoch: 3090/20000, Loss: 0.0001335646520602\n",
      "Epoch: 3100/20000, Loss: 0.0000344559630321\n",
      "Epoch: 3110/20000, Loss: 0.0000203947674891\n",
      "Epoch: 3120/20000, Loss: 0.0000089657251010\n",
      "Epoch: 3130/20000, Loss: 0.0000057706793086\n",
      "Epoch: 3140/20000, Loss: 0.0000045860583668\n",
      "Epoch: 3150/20000, Loss: 0.0000041475295802\n",
      "Epoch: 3160/20000, Loss: 0.0000038215739551\n",
      "Epoch: 3170/20000, Loss: 0.0000036685646592\n",
      "Epoch: 3180/20000, Loss: 0.0000035560829019\n",
      "Epoch: 3190/20000, Loss: 0.0000034766821955\n",
      "Epoch: 3200/20000, Loss: 0.0000034274532936\n",
      "Epoch: 3210/20000, Loss: 0.0000040166291910\n",
      "Epoch: 3220/20000, Loss: 0.0000564878864679\n",
      "Epoch: 3230/20000, Loss: 0.0012251890730113\n",
      "Epoch: 3240/20000, Loss: 0.0002526621392462\n",
      "Epoch: 3250/20000, Loss: 0.0000790146295913\n",
      "Epoch: 3260/20000, Loss: 0.0000402891200793\n",
      "Epoch: 3270/20000, Loss: 0.0000128531055452\n",
      "Epoch: 3280/20000, Loss: 0.0000068262197601\n",
      "Epoch: 3290/20000, Loss: 0.0000046361219574\n",
      "Epoch: 3300/20000, Loss: 0.0000039993428800\n",
      "Epoch: 3310/20000, Loss: 0.0000037126271764\n",
      "Epoch: 3320/20000, Loss: 0.0000035051448322\n",
      "Epoch: 3330/20000, Loss: 0.0000033930130030\n",
      "Epoch: 3340/20000, Loss: 0.0000033135220292\n",
      "Epoch: 3350/20000, Loss: 0.0000033779112982\n",
      "Epoch: 3360/20000, Loss: 0.0000093478811323\n",
      "Epoch: 3370/20000, Loss: 0.0004396252916194\n",
      "Epoch: 3380/20000, Loss: 0.0002201283205068\n",
      "Epoch: 3390/20000, Loss: 0.0000747185622458\n",
      "Epoch: 3400/20000, Loss: 0.0000331384071615\n",
      "Epoch: 3410/20000, Loss: 0.0000088250162662\n",
      "Epoch: 3420/20000, Loss: 0.0000058838550103\n",
      "Epoch: 3430/20000, Loss: 0.0000039245287553\n",
      "Epoch: 3440/20000, Loss: 0.0000034490149119\n",
      "Epoch: 3450/20000, Loss: 0.0000031056210901\n",
      "Epoch: 3460/20000, Loss: 0.0000030520707242\n",
      "Epoch: 3470/20000, Loss: 0.0000048222723308\n",
      "Epoch: 3480/20000, Loss: 0.0000924272608245\n",
      "Epoch: 3490/20000, Loss: 0.0000451617852377\n",
      "Epoch: 3500/20000, Loss: 0.0000212860068132\n",
      "Epoch: 3510/20000, Loss: 0.0000099907392723\n",
      "Epoch: 3520/20000, Loss: 0.0000067644291448\n",
      "Epoch: 3530/20000, Loss: 0.0000126309996631\n",
      "Epoch: 3540/20000, Loss: 0.0001298214629060\n",
      "Epoch: 3550/20000, Loss: 0.0001227989996551\n",
      "Epoch: 3560/20000, Loss: 0.0000368020300812\n",
      "Epoch: 3570/20000, Loss: 0.0000071579056566\n",
      "Epoch: 3580/20000, Loss: 0.0000056245639826\n",
      "Epoch: 3590/20000, Loss: 0.0000045181859605\n",
      "Epoch: 3600/20000, Loss: 0.0000030730873277\n",
      "Epoch: 3610/20000, Loss: 0.0000027386706734\n",
      "Epoch: 3620/20000, Loss: 0.0000032625014228\n",
      "Epoch: 3630/20000, Loss: 0.0000301972268062\n",
      "Epoch: 3640/20000, Loss: 0.0009332863264717\n",
      "Epoch: 3650/20000, Loss: 0.0001361791510135\n",
      "Epoch: 3660/20000, Loss: 0.0000618906633463\n",
      "Epoch: 3670/20000, Loss: 0.0000191548297153\n",
      "Epoch: 3680/20000, Loss: 0.0000078435969044\n",
      "Epoch: 3690/20000, Loss: 0.0000053466028476\n",
      "Epoch: 3700/20000, Loss: 0.0000032684538382\n",
      "Epoch: 3710/20000, Loss: 0.0000030025348678\n",
      "Epoch: 3720/20000, Loss: 0.0000026902330319\n",
      "Epoch: 3730/20000, Loss: 0.0000025727294997\n",
      "Epoch: 3740/20000, Loss: 0.0000024886021492\n",
      "Epoch: 3750/20000, Loss: 0.0000024317860152\n",
      "Epoch: 3760/20000, Loss: 0.0000024086011763\n",
      "Epoch: 3770/20000, Loss: 0.0000038284792936\n",
      "Epoch: 3780/20000, Loss: 0.0001113989856094\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 3790/20000, Loss: 0.0001778145815479\n",
      "Epoch: 3800/20000, Loss: 0.0004452609864529\n",
      "Epoch: 3810/20000, Loss: 0.0000860618238221\n",
      "Epoch: 3820/20000, Loss: 0.0000307281188725\n",
      "Epoch: 3830/20000, Loss: 0.0000145108451761\n",
      "Epoch: 3840/20000, Loss: 0.0000064601399572\n",
      "Epoch: 3850/20000, Loss: 0.0000039715623643\n",
      "Epoch: 3860/20000, Loss: 0.0000046507925617\n",
      "Epoch: 3870/20000, Loss: 0.0000182923595275\n",
      "Epoch: 3880/20000, Loss: 0.0003021637385245\n",
      "Epoch: 3890/20000, Loss: 0.0000485412783746\n",
      "Epoch: 3900/20000, Loss: 0.0000392653237213\n",
      "Epoch: 3910/20000, Loss: 0.0000112784346129\n",
      "Epoch: 3920/20000, Loss: 0.0000062755962063\n",
      "Epoch: 3930/20000, Loss: 0.0000027637604489\n",
      "Epoch: 3940/20000, Loss: 0.0000029386660572\n",
      "Epoch: 3950/20000, Loss: 0.0000024003904855\n",
      "Epoch: 3960/20000, Loss: 0.0000023786869860\n",
      "Epoch: 3970/20000, Loss: 0.0000026932286801\n",
      "Epoch: 3980/20000, Loss: 0.0000137267552418\n",
      "Epoch: 3990/20000, Loss: 0.0003460097941570\n",
      "Epoch: 4000/20000, Loss: 0.0001483433443354\n",
      "Epoch: 4010/20000, Loss: 0.0000536621228093\n",
      "Epoch: 4020/20000, Loss: 0.0000146203774420\n",
      "Epoch: 4030/20000, Loss: 0.0000089938193923\n",
      "Epoch: 4040/20000, Loss: 0.0000042377705540\n",
      "Epoch: 4050/20000, Loss: 0.0000053008034229\n",
      "Epoch: 4060/20000, Loss: 0.0000623063679086\n",
      "Epoch: 4070/20000, Loss: 0.0001093478058465\n",
      "Epoch: 4080/20000, Loss: 0.0000677735515637\n",
      "Epoch: 4090/20000, Loss: 0.0000190584014490\n",
      "Epoch: 4100/20000, Loss: 0.0000060028150983\n",
      "Epoch: 4110/20000, Loss: 0.0000059934914134\n",
      "Epoch: 4120/20000, Loss: 0.0000537103005627\n",
      "Epoch: 4130/20000, Loss: 0.0003717171493918\n",
      "Epoch: 4140/20000, Loss: 0.0000174521228473\n",
      "Epoch: 4150/20000, Loss: 0.0000273557543551\n",
      "Epoch: 4160/20000, Loss: 0.0000104971677501\n",
      "Epoch: 4170/20000, Loss: 0.0000077219592640\n",
      "Epoch: 4180/20000, Loss: 0.0000042544020289\n",
      "Epoch: 4190/20000, Loss: 0.0000165066358022\n",
      "Epoch: 4200/20000, Loss: 0.0001491769216955\n",
      "Epoch: 4210/20000, Loss: 0.0001028754704748\n",
      "Epoch: 4220/20000, Loss: 0.0000598313927185\n",
      "Epoch: 4230/20000, Loss: 0.0000163939348568\n",
      "Epoch: 4240/20000, Loss: 0.0000083427648860\n",
      "Epoch: 4250/20000, Loss: 0.0000169892773556\n",
      "Epoch: 4260/20000, Loss: 0.0002252596314065\n",
      "Epoch: 4270/20000, Loss: 0.0000708613588358\n",
      "Epoch: 4280/20000, Loss: 0.0000458014219475\n",
      "Epoch: 4290/20000, Loss: 0.0000104418650153\n",
      "Epoch: 4300/20000, Loss: 0.0000074769300227\n",
      "Epoch: 4310/20000, Loss: 0.0000035504810967\n",
      "Epoch: 4320/20000, Loss: 0.0000063624456743\n",
      "Epoch: 4330/20000, Loss: 0.0001247844775207\n",
      "Epoch: 4340/20000, Loss: 0.0001590824249433\n",
      "Epoch: 4350/20000, Loss: 0.0000524505667272\n",
      "Epoch: 4360/20000, Loss: 0.0000125284568639\n",
      "Epoch: 4370/20000, Loss: 0.0000083339336925\n",
      "Epoch: 4380/20000, Loss: 0.0000056115418374\n",
      "Epoch: 4390/20000, Loss: 0.0000226302745432\n",
      "Epoch: 4400/20000, Loss: 0.0002213276602561\n",
      "Epoch: 4410/20000, Loss: 0.0000381340978493\n",
      "Epoch: 4420/20000, Loss: 0.0000231970370805\n",
      "Epoch: 4430/20000, Loss: 0.0000180240349437\n",
      "Epoch: 4440/20000, Loss: 0.0000062800490923\n",
      "Epoch: 4450/20000, Loss: 0.0000051100287237\n",
      "Epoch: 4460/20000, Loss: 0.0000035870079955\n",
      "Epoch: 4470/20000, Loss: 0.0000106319876068\n",
      "Epoch: 4480/20000, Loss: 0.0000953450507950\n",
      "Epoch: 4490/20000, Loss: 0.0004919682978652\n",
      "Epoch: 4500/20000, Loss: 0.0001685014576651\n",
      "Epoch: 4510/20000, Loss: 0.0000592353462707\n",
      "Epoch: 4520/20000, Loss: 0.0000219307112275\n",
      "Epoch: 4530/20000, Loss: 0.0000132461118483\n",
      "Epoch: 4540/20000, Loss: 0.0000145419571709\n",
      "Epoch: 4550/20000, Loss: 0.0000161802799994\n",
      "Epoch: 4560/20000, Loss: 0.0000112606867333\n",
      "Epoch: 4570/20000, Loss: 0.0000223090883082\n",
      "Epoch: 4580/20000, Loss: 0.0000742025731597\n",
      "Epoch: 4590/20000, Loss: 0.0001643250870984\n",
      "Epoch: 4600/20000, Loss: 0.0000681529563735\n",
      "Epoch: 4610/20000, Loss: 0.0000339682119375\n",
      "Epoch: 4620/20000, Loss: 0.0000211103342735\n",
      "Epoch: 4630/20000, Loss: 0.0000410547145293\n",
      "Epoch: 4640/20000, Loss: 0.0001143441768363\n",
      "Epoch: 4650/20000, Loss: 0.0000155652232934\n",
      "Epoch: 4660/20000, Loss: 0.0000216274092963\n",
      "Epoch: 4670/20000, Loss: 0.0000192020434042\n",
      "Epoch: 4680/20000, Loss: 0.0000422932898800\n",
      "Epoch: 4690/20000, Loss: 0.0001703199814074\n",
      "Epoch: 4700/20000, Loss: 0.0000550755103177\n",
      "Epoch: 4710/20000, Loss: 0.0000114254917207\n",
      "Epoch: 4720/20000, Loss: 0.0000058560076468\n",
      "Epoch: 4730/20000, Loss: 0.0000154333229148\n",
      "Epoch: 4740/20000, Loss: 0.0002238114684587\n",
      "Epoch: 4750/20000, Loss: 0.0001764387998264\n",
      "Epoch: 4760/20000, Loss: 0.0000557344501431\n",
      "Epoch: 4770/20000, Loss: 0.0000215470827243\n",
      "Epoch: 4780/20000, Loss: 0.0000127514431369\n",
      "Epoch: 4790/20000, Loss: 0.0001149416711996\n",
      "Epoch: 4800/20000, Loss: 0.0001740329316817\n",
      "Epoch: 4810/20000, Loss: 0.0000322869891534\n",
      "Epoch: 4820/20000, Loss: 0.0000513749364472\n",
      "Epoch: 4830/20000, Loss: 0.0000298805771308\n",
      "Epoch: 4840/20000, Loss: 0.0000025460885809\n",
      "Epoch: 4850/20000, Loss: 0.0000093806147561\n",
      "Epoch: 4860/20000, Loss: 0.0000953932030825\n",
      "Epoch: 4870/20000, Loss: 0.0001966929994524\n",
      "Epoch: 4880/20000, Loss: 0.0000585894485994\n",
      "Epoch: 4890/20000, Loss: 0.0000178021182364\n",
      "Epoch: 4900/20000, Loss: 0.0000073003989201\n",
      "Epoch: 4910/20000, Loss: 0.0000091649990281\n",
      "Epoch: 4920/20000, Loss: 0.0000425534126407\n",
      "Epoch: 4930/20000, Loss: 0.0000184392974916\n",
      "Epoch: 4940/20000, Loss: 0.0000415083559346\n",
      "Epoch: 4950/20000, Loss: 0.0001458316110075\n",
      "Epoch: 4960/20000, Loss: 0.0000360212179658\n",
      "Epoch: 4970/20000, Loss: 0.0000230488349189\n",
      "Epoch: 4980/20000, Loss: 0.0000280463045783\n",
      "Epoch: 4990/20000, Loss: 0.0000770089682192\n",
      "Epoch: 5000/20000, Loss: 0.0000787520766607\n",
      "Epoch: 5010/20000, Loss: 0.0000125254673549\n",
      "Epoch: 5020/20000, Loss: 0.0000274149642792\n",
      "Epoch: 5030/20000, Loss: 0.0000644247920718\n",
      "Epoch: 5040/20000, Loss: 0.0000347717141267\n",
      "Epoch: 5050/20000, Loss: 0.0001252957881661\n",
      "Epoch: 5060/20000, Loss: 0.0000973057176452\n",
      "Epoch: 5070/20000, Loss: 0.0000633416129858\n",
      "Epoch: 5080/20000, Loss: 0.0000179208091140\n",
      "Epoch: 5090/20000, Loss: 0.0000093339949672\n",
      "Epoch: 5100/20000, Loss: 0.0000812699145172\n",
      "Epoch: 5110/20000, Loss: 0.0002743277000263\n",
      "Epoch: 5120/20000, Loss: 0.0000533030943188\n",
      "Epoch: 5130/20000, Loss: 0.0000243845970544\n",
      "Epoch: 5140/20000, Loss: 0.0000494303276355\n",
      "Epoch: 5150/20000, Loss: 0.0000357139106200\n",
      "Epoch: 5160/20000, Loss: 0.0000170076291397\n",
      "Epoch: 5170/20000, Loss: 0.0000132551112983\n",
      "Epoch: 5180/20000, Loss: 0.0000394933449570\n",
      "Epoch: 5190/20000, Loss: 0.0001904821838252\n",
      "Epoch: 5200/20000, Loss: 0.0000407143197663\n",
      "Epoch: 5210/20000, Loss: 0.0000118279431263\n",
      "Epoch: 5220/20000, Loss: 0.0000252071349678\n",
      "Epoch: 5230/20000, Loss: 0.0000244387792918\n",
      "Epoch: 5240/20000, Loss: 0.0001253646187251\n",
      "Epoch: 5250/20000, Loss: 0.0001320197625319\n",
      "Epoch: 5260/20000, Loss: 0.0000650881047477\n",
      "Epoch: 5270/20000, Loss: 0.0000110055070763\n",
      "Epoch: 5280/20000, Loss: 0.0000052462291933\n",
      "Epoch: 5290/20000, Loss: 0.0000226791289606\n",
      "Epoch: 5300/20000, Loss: 0.0004151891334914\n",
      "Epoch: 5310/20000, Loss: 0.0001421685301466\n",
      "Epoch: 5320/20000, Loss: 0.0000424151148763\n",
      "Epoch: 5330/20000, Loss: 0.0000161462012329\n",
      "Epoch: 5340/20000, Loss: 0.0000060587785811\n",
      "Epoch: 5350/20000, Loss: 0.0000052988361858\n",
      "Epoch: 5360/20000, Loss: 0.0000350494592567\n",
      "Epoch: 5370/20000, Loss: 0.0000894687982509\n",
      "Epoch: 5380/20000, Loss: 0.0000053545354604\n",
      "Epoch: 5390/20000, Loss: 0.0000157248723553\n",
      "Epoch: 5400/20000, Loss: 0.0000280087060673\n",
      "Epoch: 5410/20000, Loss: 0.0000864460525918\n",
      "Epoch: 5420/20000, Loss: 0.0000891301824595\n",
      "Epoch: 5430/20000, Loss: 0.0000674982948112\n",
      "Epoch: 5440/20000, Loss: 0.0000191944291146\n",
      "Epoch: 5450/20000, Loss: 0.0000174297692865\n",
      "Epoch: 5460/20000, Loss: 0.0002020206156885\n",
      "Epoch: 5470/20000, Loss: 0.0001789647649275\n",
      "Epoch: 5480/20000, Loss: 0.0000448140381195\n",
      "Epoch: 5490/20000, Loss: 0.0000213972034544\n",
      "Epoch: 5500/20000, Loss: 0.0000093777471193\n",
      "Epoch: 5510/20000, Loss: 0.0000335257645929\n",
      "Epoch: 5520/20000, Loss: 0.0001308219798375\n",
      "Epoch: 5530/20000, Loss: 0.0000330962429871\n",
      "Epoch: 5540/20000, Loss: 0.0000133694884425\n",
      "Epoch: 5550/20000, Loss: 0.0000096150643003\n",
      "Epoch: 5560/20000, Loss: 0.0000119648084365\n",
      "Epoch: 5570/20000, Loss: 0.0001180463150376\n",
      "Epoch: 5580/20000, Loss: 0.0001102296882891\n",
      "Epoch: 5590/20000, Loss: 0.0000297875394608\n",
      "Epoch: 5600/20000, Loss: 0.0000240616682277\n",
      "Epoch: 5610/20000, Loss: 0.0000146314750964\n",
      "Epoch: 5620/20000, Loss: 0.0001306470512645\n",
      "Epoch: 5630/20000, Loss: 0.0000192397656065\n",
      "Epoch: 5640/20000, Loss: 0.0000288524206553\n",
      "Epoch: 5650/20000, Loss: 0.0000097084021036\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 5660/20000, Loss: 0.0000043000613914\n",
      "Epoch: 5670/20000, Loss: 0.0000162740761880\n",
      "Epoch: 5680/20000, Loss: 0.0002782179508358\n",
      "Epoch: 5690/20000, Loss: 0.0004183659621049\n",
      "Epoch: 5700/20000, Loss: 0.0000926234279177\n",
      "Epoch: 5710/20000, Loss: 0.0001674849772826\n",
      "Epoch: 5720/20000, Loss: 0.0000337917626894\n",
      "Epoch: 5730/20000, Loss: 0.0000221229711315\n",
      "Epoch: 5740/20000, Loss: 0.0002303821238456\n",
      "Epoch: 5750/20000, Loss: 0.0000551486955374\n",
      "Epoch: 5760/20000, Loss: 0.0000296083835565\n",
      "Epoch: 5770/20000, Loss: 0.0000102264511952\n",
      "Epoch: 5780/20000, Loss: 0.0000031501795092\n",
      "Epoch: 5790/20000, Loss: 0.0000033509741115\n",
      "Epoch: 5800/20000, Loss: 0.0000013778118273\n",
      "Epoch: 5810/20000, Loss: 0.0000014837992239\n",
      "Epoch: 5820/20000, Loss: 0.0000051620063459\n",
      "Epoch: 5830/20000, Loss: 0.0001591268519405\n",
      "Epoch: 5840/20000, Loss: 0.0001267578190891\n",
      "Epoch: 5850/20000, Loss: 0.0000554241341888\n",
      "Epoch: 5860/20000, Loss: 0.0000127951589093\n",
      "Epoch: 5870/20000, Loss: 0.0000060630363805\n",
      "Epoch: 5880/20000, Loss: 0.0000026676120797\n",
      "Epoch: 5890/20000, Loss: 0.0000129279842440\n",
      "Epoch: 5900/20000, Loss: 0.0001702403824311\n",
      "Epoch: 5910/20000, Loss: 0.0000256114890362\n",
      "Epoch: 5920/20000, Loss: 0.0000157977829076\n",
      "Epoch: 5930/20000, Loss: 0.0000045094802772\n",
      "Epoch: 5940/20000, Loss: 0.0000082634087448\n",
      "Epoch: 5950/20000, Loss: 0.0000408253872592\n",
      "Epoch: 5960/20000, Loss: 0.0001276746770600\n",
      "Epoch: 5970/20000, Loss: 0.0000177953897946\n",
      "Epoch: 5980/20000, Loss: 0.0000203840081667\n",
      "Epoch: 5990/20000, Loss: 0.0000057050360738\n",
      "Epoch: 6000/20000, Loss: 0.0000183747179108\n",
      "Epoch: 6010/20000, Loss: 0.0000807113610790\n",
      "Epoch: 6020/20000, Loss: 0.0001819960307330\n",
      "Epoch: 6030/20000, Loss: 0.0000778527464718\n",
      "Epoch: 6040/20000, Loss: 0.0000187767200259\n",
      "Epoch: 6050/20000, Loss: 0.0000262829089479\n",
      "Epoch: 6060/20000, Loss: 0.0000718116498319\n",
      "Epoch: 6070/20000, Loss: 0.0000237209078477\n",
      "Epoch: 6080/20000, Loss: 0.0000057285401454\n",
      "Epoch: 6090/20000, Loss: 0.0000184825621545\n",
      "Epoch: 6100/20000, Loss: 0.0000680211815052\n",
      "Epoch: 6110/20000, Loss: 0.0001422187051503\n",
      "Epoch: 6120/20000, Loss: 0.0000250873381447\n",
      "Epoch: 6130/20000, Loss: 0.0000095948353191\n",
      "Epoch: 6140/20000, Loss: 0.0000190452810784\n",
      "Epoch: 6150/20000, Loss: 0.0000214473220694\n",
      "Epoch: 6160/20000, Loss: 0.0001563574769534\n",
      "Epoch: 6170/20000, Loss: 0.0000957967058639\n",
      "Epoch: 6180/20000, Loss: 0.0000339102516591\n",
      "Epoch: 6190/20000, Loss: 0.0001532143069198\n",
      "Epoch: 6200/20000, Loss: 0.0000558555184398\n",
      "Epoch: 6210/20000, Loss: 0.0000187767909665\n",
      "Epoch: 6220/20000, Loss: 0.0000520377943758\n",
      "Epoch: 6230/20000, Loss: 0.0000131251472339\n",
      "Epoch: 6240/20000, Loss: 0.0000129001373352\n",
      "Epoch: 6250/20000, Loss: 0.0000017696887653\n",
      "Epoch: 6260/20000, Loss: 0.0000027938176572\n",
      "Epoch: 6270/20000, Loss: 0.0000151590975292\n",
      "Epoch: 6280/20000, Loss: 0.0002267365198350\n",
      "Epoch: 6290/20000, Loss: 0.0000335996010108\n",
      "Epoch: 6300/20000, Loss: 0.0000499791131006\n",
      "Epoch: 6310/20000, Loss: 0.0000524519782630\n",
      "Epoch: 6320/20000, Loss: 0.0000448319369752\n",
      "Epoch: 6330/20000, Loss: 0.0000164494649653\n",
      "Epoch: 6340/20000, Loss: 0.0000044778817028\n",
      "Epoch: 6350/20000, Loss: 0.0000051770739447\n",
      "Epoch: 6360/20000, Loss: 0.0000041978787522\n",
      "Epoch: 6370/20000, Loss: 0.0000159601022460\n",
      "Epoch: 6380/20000, Loss: 0.0001952661114046\n",
      "Epoch: 6390/20000, Loss: 0.0000967876112554\n",
      "Epoch: 6400/20000, Loss: 0.0003046823549084\n",
      "Epoch: 6410/20000, Loss: 0.0001227161701536\n",
      "Epoch: 6420/20000, Loss: 0.0000393392838305\n",
      "Epoch: 6430/20000, Loss: 0.0000111303570520\n",
      "Epoch: 6440/20000, Loss: 0.0000051207107390\n",
      "Epoch: 6450/20000, Loss: 0.0000019876742954\n",
      "Epoch: 6460/20000, Loss: 0.0000012793559563\n",
      "Epoch: 6470/20000, Loss: 0.0000012053332057\n",
      "Epoch: 6480/20000, Loss: 0.0000102797921500\n",
      "Epoch: 6490/20000, Loss: 0.0002522240683902\n",
      "Epoch: 6500/20000, Loss: 0.0000576179263589\n",
      "Epoch: 6510/20000, Loss: 0.0000589634873904\n",
      "Epoch: 6520/20000, Loss: 0.0000412747212977\n",
      "Epoch: 6530/20000, Loss: 0.0000027904275157\n",
      "Epoch: 6540/20000, Loss: 0.0000104006785477\n",
      "Epoch: 6550/20000, Loss: 0.0000512716724188\n",
      "Epoch: 6560/20000, Loss: 0.0001560757955303\n",
      "Epoch: 6570/20000, Loss: 0.0000563180583413\n",
      "Epoch: 6580/20000, Loss: 0.0000165409746842\n",
      "Epoch: 6590/20000, Loss: 0.0000109342036012\n",
      "Epoch: 6600/20000, Loss: 0.0000121412731460\n",
      "Epoch: 6610/20000, Loss: 0.0000242131991399\n",
      "Epoch: 6620/20000, Loss: 0.0001193582065753\n",
      "Epoch: 6630/20000, Loss: 0.0000636071054032\n",
      "Epoch: 6640/20000, Loss: 0.0000437765957031\n",
      "Epoch: 6650/20000, Loss: 0.0000148151011672\n",
      "Epoch: 6660/20000, Loss: 0.0000085627116277\n",
      "Epoch: 6670/20000, Loss: 0.0000125053484226\n",
      "Epoch: 6680/20000, Loss: 0.0000561947963433\n",
      "Epoch: 6690/20000, Loss: 0.0001797473523766\n",
      "Epoch: 6700/20000, Loss: 0.0001173047712655\n",
      "Epoch: 6710/20000, Loss: 0.0001181269108201\n",
      "Epoch: 6720/20000, Loss: 0.0002621187304612\n",
      "Epoch: 6730/20000, Loss: 0.0000694589907653\n",
      "Epoch: 6740/20000, Loss: 0.0000170993826032\n",
      "Epoch: 6750/20000, Loss: 0.0000079601222751\n",
      "Epoch: 6760/20000, Loss: 0.0000032544808164\n",
      "Epoch: 6770/20000, Loss: 0.0000023835684715\n",
      "Epoch: 6780/20000, Loss: 0.0000066554671321\n",
      "Epoch: 6790/20000, Loss: 0.0000967462037806\n",
      "Epoch: 6800/20000, Loss: 0.0000398544689233\n",
      "Epoch: 6810/20000, Loss: 0.0000104130485852\n",
      "Epoch: 6820/20000, Loss: 0.0000094234574135\n",
      "Epoch: 6830/20000, Loss: 0.0000166693916981\n",
      "Epoch: 6840/20000, Loss: 0.0000243782378675\n",
      "Epoch: 6850/20000, Loss: 0.0000120070135381\n",
      "Epoch: 6860/20000, Loss: 0.0000103955144368\n",
      "Epoch: 6870/20000, Loss: 0.0000500121786899\n",
      "Epoch: 6880/20000, Loss: 0.0002166164631490\n",
      "Epoch: 6890/20000, Loss: 0.0000517142580065\n",
      "Epoch: 6900/20000, Loss: 0.0000608499758528\n",
      "Epoch: 6910/20000, Loss: 0.0000124057287394\n",
      "Epoch: 6920/20000, Loss: 0.0000155808174895\n",
      "Epoch: 6930/20000, Loss: 0.0000171220235643\n",
      "Epoch: 6940/20000, Loss: 0.0000314940698445\n",
      "Epoch: 6950/20000, Loss: 0.0000212277245737\n",
      "Epoch: 6960/20000, Loss: 0.0001712685043458\n",
      "Epoch: 6970/20000, Loss: 0.0002664484782144\n",
      "Epoch: 6980/20000, Loss: 0.0001329385122517\n",
      "Epoch: 6990/20000, Loss: 0.0000901001767488\n",
      "Epoch: 7000/20000, Loss: 0.0000265176804533\n",
      "Epoch: 7010/20000, Loss: 0.0000092628160928\n",
      "Epoch: 7020/20000, Loss: 0.0000057090342125\n",
      "Epoch: 7030/20000, Loss: 0.0000017034072926\n",
      "Epoch: 7040/20000, Loss: 0.0000015185413531\n",
      "Epoch: 7050/20000, Loss: 0.0000028882252536\n",
      "Epoch: 7060/20000, Loss: 0.0000332353265549\n",
      "Epoch: 7070/20000, Loss: 0.0002090189518640\n",
      "Epoch: 7080/20000, Loss: 0.0001021839852910\n",
      "Epoch: 7090/20000, Loss: 0.0000236669766309\n",
      "Epoch: 7100/20000, Loss: 0.0000243778049480\n",
      "Epoch: 7110/20000, Loss: 0.0000100488086900\n",
      "Epoch: 7120/20000, Loss: 0.0000033220383102\n",
      "Epoch: 7130/20000, Loss: 0.0000023684142434\n",
      "Epoch: 7140/20000, Loss: 0.0000083620025180\n",
      "Epoch: 7150/20000, Loss: 0.0000859733991092\n",
      "Epoch: 7160/20000, Loss: 0.0001283268211409\n",
      "Epoch: 7170/20000, Loss: 0.0000410826432926\n",
      "Epoch: 7180/20000, Loss: 0.0000223897932301\n",
      "Epoch: 7190/20000, Loss: 0.0000341402228514\n",
      "Epoch: 7200/20000, Loss: 0.0000072926318353\n",
      "Epoch: 7210/20000, Loss: 0.0000035484495129\n",
      "Epoch: 7220/20000, Loss: 0.0000009617333490\n",
      "Epoch: 7230/20000, Loss: 0.0000066557877290\n",
      "Epoch: 7240/20000, Loss: 0.0002733566216193\n",
      "Epoch: 7250/20000, Loss: 0.0001586233847775\n",
      "Epoch: 7260/20000, Loss: 0.0001079802677850\n",
      "Epoch: 7270/20000, Loss: 0.0000433789173258\n",
      "Epoch: 7280/20000, Loss: 0.0000158108250616\n",
      "Epoch: 7290/20000, Loss: 0.0000064101327553\n",
      "Epoch: 7300/20000, Loss: 0.0000030032833820\n",
      "Epoch: 7310/20000, Loss: 0.0000015242353584\n",
      "Epoch: 7320/20000, Loss: 0.0000007931961932\n",
      "Epoch: 7330/20000, Loss: 0.0000006686676102\n",
      "Epoch: 7340/20000, Loss: 0.0000005807168009\n",
      "Epoch: 7350/20000, Loss: 0.0000007314972663\n",
      "Epoch: 7360/20000, Loss: 0.0000049219902394\n",
      "Epoch: 7370/20000, Loss: 0.0001238474214915\n",
      "Epoch: 7380/20000, Loss: 0.0000738461239962\n",
      "Epoch: 7390/20000, Loss: 0.0002265797957079\n",
      "Epoch: 7400/20000, Loss: 0.0000821022404125\n",
      "Epoch: 7410/20000, Loss: 0.0000198473353521\n",
      "Epoch: 7420/20000, Loss: 0.0000120111881188\n",
      "Epoch: 7430/20000, Loss: 0.0000050698467930\n",
      "Epoch: 7440/20000, Loss: 0.0000038362995838\n",
      "Epoch: 7450/20000, Loss: 0.0000031296228826\n",
      "Epoch: 7460/20000, Loss: 0.0000143180695886\n",
      "Epoch: 7470/20000, Loss: 0.0001030068597174\n",
      "Epoch: 7480/20000, Loss: 0.0000258702802967\n",
      "Epoch: 7490/20000, Loss: 0.0000084414132289\n",
      "Epoch: 7500/20000, Loss: 0.0000061904684117\n",
      "Epoch: 7510/20000, Loss: 0.0000022894755602\n",
      "Epoch: 7520/20000, Loss: 0.0000009967866390\n",
      "Epoch: 7530/20000, Loss: 0.0000005986788665\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 7540/20000, Loss: 0.0000017922469624\n",
      "Epoch: 7550/20000, Loss: 0.0000987823732430\n",
      "Epoch: 7560/20000, Loss: 0.0006302400724962\n",
      "Epoch: 7570/20000, Loss: 0.0011730283731595\n",
      "Epoch: 7580/20000, Loss: 0.0009418110130355\n",
      "Epoch: 7590/20000, Loss: 0.0106197064742446\n",
      "Epoch: 7600/20000, Loss: 0.0261865705251694\n",
      "Epoch: 7610/20000, Loss: 0.0057151848450303\n",
      "Epoch: 7620/20000, Loss: 0.0017884728731588\n",
      "Epoch: 7630/20000, Loss: 0.0007715939427726\n",
      "Epoch: 7640/20000, Loss: 0.0002943059080280\n",
      "Epoch: 7650/20000, Loss: 0.0001104117473005\n",
      "Epoch: 7660/20000, Loss: 0.0000560332082387\n",
      "Epoch: 7670/20000, Loss: 0.0000339125981554\n",
      "Epoch: 7680/20000, Loss: 0.0000222634735110\n",
      "Epoch: 7690/20000, Loss: 0.0000163283420989\n",
      "Epoch: 7700/20000, Loss: 0.0000133635385282\n",
      "Epoch: 7710/20000, Loss: 0.0000114271415441\n",
      "Epoch: 7720/20000, Loss: 0.0000100625065897\n",
      "Epoch: 7730/20000, Loss: 0.0000089990908236\n",
      "Epoch: 7740/20000, Loss: 0.0000081343050624\n",
      "Epoch: 7750/20000, Loss: 0.0000074098438745\n",
      "Epoch: 7760/20000, Loss: 0.0000067944401962\n",
      "Epoch: 7770/20000, Loss: 0.0000062644712671\n",
      "Epoch: 7780/20000, Loss: 0.0000058032355810\n",
      "Epoch: 7790/20000, Loss: 0.0000053983198995\n",
      "Epoch: 7800/20000, Loss: 0.0000050402977649\n",
      "Epoch: 7810/20000, Loss: 0.0000047217990868\n",
      "Epoch: 7820/20000, Loss: 0.0000044369789975\n",
      "Epoch: 7830/20000, Loss: 0.0000041811649680\n",
      "Epoch: 7840/20000, Loss: 0.0000039504725464\n",
      "Epoch: 7850/20000, Loss: 0.0000037417250951\n",
      "Epoch: 7860/20000, Loss: 0.0000035522152757\n",
      "Epoch: 7870/20000, Loss: 0.0000033796773096\n",
      "Epoch: 7880/20000, Loss: 0.0000032221373658\n",
      "Epoch: 7890/20000, Loss: 0.0000030779226563\n",
      "Epoch: 7900/20000, Loss: 0.0000029455613912\n",
      "Epoch: 7910/20000, Loss: 0.0000028237882361\n",
      "Epoch: 7920/20000, Loss: 0.0000027114610930\n",
      "Epoch: 7930/20000, Loss: 0.0000026076043014\n",
      "Epoch: 7940/20000, Loss: 0.0000025113520223\n",
      "Epoch: 7950/20000, Loss: 0.0000024219355055\n",
      "Epoch: 7960/20000, Loss: 0.0000023386701287\n",
      "Epoch: 7970/20000, Loss: 0.0000022609515327\n",
      "Epoch: 7980/20000, Loss: 0.0000021882437977\n",
      "Epoch: 7990/20000, Loss: 0.0000021200692117\n",
      "Epoch: 8000/20000, Loss: 0.0000020560169105\n",
      "Epoch: 8010/20000, Loss: 0.0000019956926280\n",
      "Epoch: 8020/20000, Loss: 0.0000019387687189\n",
      "Epoch: 8030/20000, Loss: 0.0000018849555090\n",
      "Epoch: 8040/20000, Loss: 0.0000018339829921\n",
      "Epoch: 8050/20000, Loss: 0.0000017871537921\n",
      "Epoch: 8060/20000, Loss: 0.0000023530280941\n",
      "Epoch: 8070/20000, Loss: 0.0002212335239165\n",
      "Epoch: 8080/20000, Loss: 0.0000334845644829\n",
      "Epoch: 8090/20000, Loss: 0.0000176979756361\n",
      "Epoch: 8100/20000, Loss: 0.0000070687588050\n",
      "Epoch: 8110/20000, Loss: 0.0000037787685869\n",
      "Epoch: 8120/20000, Loss: 0.0000022263652681\n",
      "Epoch: 8130/20000, Loss: 0.0000018236202095\n",
      "Epoch: 8140/20000, Loss: 0.0000016628021058\n",
      "Epoch: 8150/20000, Loss: 0.0000016215387859\n",
      "Epoch: 8160/20000, Loss: 0.0000015807405589\n",
      "Epoch: 8170/20000, Loss: 0.0000015354800098\n",
      "Epoch: 8180/20000, Loss: 0.0000014971917608\n",
      "Epoch: 8190/20000, Loss: 0.0000014633981209\n",
      "Epoch: 8200/20000, Loss: 0.0000014307581750\n",
      "Epoch: 8210/20000, Loss: 0.0000013996902908\n",
      "Epoch: 8220/20000, Loss: 0.0000013699833517\n",
      "Epoch: 8230/20000, Loss: 0.0000013413892930\n",
      "Epoch: 8240/20000, Loss: 0.0000013138620716\n",
      "Epoch: 8250/20000, Loss: 0.0000012873069863\n",
      "Epoch: 8260/20000, Loss: 0.0000012616753793\n",
      "Epoch: 8270/20000, Loss: 0.0000012369064279\n",
      "Epoch: 8280/20000, Loss: 0.0000012129536344\n",
      "Epoch: 8290/20000, Loss: 0.0000011897778904\n",
      "Epoch: 8300/20000, Loss: 0.0000011673521385\n",
      "Epoch: 8310/20000, Loss: 0.0000011456269249\n",
      "Epoch: 8320/20000, Loss: 0.0000011245791711\n",
      "Epoch: 8330/20000, Loss: 0.0000011041906873\n",
      "Epoch: 8340/20000, Loss: 0.0000010844196368\n",
      "Epoch: 8350/20000, Loss: 0.0000010652655646\n",
      "Epoch: 8360/20000, Loss: 0.0000010466826552\n",
      "Epoch: 8370/20000, Loss: 0.0000010286584029\n",
      "Epoch: 8380/20000, Loss: 0.0000010111809843\n",
      "Epoch: 8390/20000, Loss: 0.0000009942148154\n",
      "Epoch: 8400/20000, Loss: 0.0000009777545529\n",
      "Epoch: 8410/20000, Loss: 0.0000009617821206\n",
      "Epoch: 8420/20000, Loss: 0.0000009462753496\n",
      "Epoch: 8430/20000, Loss: 0.0000009312204270\n",
      "Epoch: 8440/20000, Loss: 0.0000009166090535\n",
      "Epoch: 8450/20000, Loss: 0.0000009024114433\n",
      "Epoch: 8460/20000, Loss: 0.0000008886271985\n",
      "Epoch: 8470/20000, Loss: 0.0000008752429039\n",
      "Epoch: 8480/20000, Loss: 0.0000008622387782\n",
      "Epoch: 8490/20000, Loss: 0.0000008495939028\n",
      "Epoch: 8500/20000, Loss: 0.0000008373160654\n",
      "Epoch: 8510/20000, Loss: 0.0000008253781516\n",
      "Epoch: 8520/20000, Loss: 0.0000008137708960\n",
      "Epoch: 8530/20000, Loss: 0.0000008024944123\n",
      "Epoch: 8540/20000, Loss: 0.0000007915209039\n",
      "Epoch: 8550/20000, Loss: 0.0000007808534974\n",
      "Epoch: 8560/20000, Loss: 0.0000007705661460\n",
      "Epoch: 8570/20000, Loss: 0.0000007679141731\n",
      "Epoch: 8580/20000, Loss: 0.0000019381873244\n",
      "Epoch: 8590/20000, Loss: 0.0003005338658113\n",
      "Epoch: 8600/20000, Loss: 0.0002636333811097\n",
      "Epoch: 8610/20000, Loss: 0.0000615969547653\n",
      "Epoch: 8620/20000, Loss: 0.0000133963540065\n",
      "Epoch: 8630/20000, Loss: 0.0000055304608395\n",
      "Epoch: 8640/20000, Loss: 0.0000024974340249\n",
      "Epoch: 8650/20000, Loss: 0.0000015898522179\n",
      "Epoch: 8660/20000, Loss: 0.0000012221709085\n",
      "Epoch: 8670/20000, Loss: 0.0000010419001910\n",
      "Epoch: 8680/20000, Loss: 0.0000009453149232\n",
      "Epoch: 8690/20000, Loss: 0.0000008741758393\n",
      "Epoch: 8700/20000, Loss: 0.0000008378993357\n",
      "Epoch: 8710/20000, Loss: 0.0000008117922903\n",
      "Epoch: 8720/20000, Loss: 0.0000007897899650\n",
      "Epoch: 8730/20000, Loss: 0.0000007705514236\n",
      "Epoch: 8740/20000, Loss: 0.0000007535624036\n",
      "Epoch: 8750/20000, Loss: 0.0000007379312592\n",
      "Epoch: 8760/20000, Loss: 0.0000007235999533\n",
      "Epoch: 8770/20000, Loss: 0.0000007102501058\n",
      "Epoch: 8780/20000, Loss: 0.0000006977923590\n",
      "Epoch: 8790/20000, Loss: 0.0000006860848316\n",
      "Epoch: 8800/20000, Loss: 0.0000006750688613\n",
      "Epoch: 8810/20000, Loss: 0.0000006653285709\n",
      "Epoch: 8820/20000, Loss: 0.0000007130367976\n",
      "Epoch: 8830/20000, Loss: 0.0000108656695375\n",
      "Epoch: 8840/20000, Loss: 0.0002351323055336\n",
      "Epoch: 8850/20000, Loss: 0.0000498838853673\n",
      "Epoch: 8860/20000, Loss: 0.0000235308416450\n",
      "Epoch: 8870/20000, Loss: 0.0000060053766902\n",
      "Epoch: 8880/20000, Loss: 0.0000022223728138\n",
      "Epoch: 8890/20000, Loss: 0.0000019698036340\n",
      "Epoch: 8900/20000, Loss: 0.0000019148174033\n",
      "Epoch: 8910/20000, Loss: 0.0000047965236263\n",
      "Epoch: 8920/20000, Loss: 0.0000705680504325\n",
      "Epoch: 8930/20000, Loss: 0.0001125153139583\n",
      "Epoch: 8940/20000, Loss: 0.0000120999084174\n",
      "Epoch: 8950/20000, Loss: 0.0000030263165627\n",
      "Epoch: 8960/20000, Loss: 0.0000055578907450\n",
      "Epoch: 8970/20000, Loss: 0.0000034660060919\n",
      "Epoch: 8980/20000, Loss: 0.0000018377052129\n",
      "Epoch: 8990/20000, Loss: 0.0000010226558516\n",
      "Epoch: 9000/20000, Loss: 0.0000007424932278\n",
      "Epoch: 9010/20000, Loss: 0.0000008248017025\n",
      "Epoch: 9020/20000, Loss: 0.0000007193295914\n",
      "Epoch: 9030/20000, Loss: 0.0000006947704492\n",
      "Epoch: 9040/20000, Loss: 0.0000008109876717\n",
      "Epoch: 9050/20000, Loss: 0.0000068955841925\n",
      "Epoch: 9060/20000, Loss: 0.0004687784821726\n",
      "Epoch: 9070/20000, Loss: 0.0003310685278848\n",
      "Epoch: 9080/20000, Loss: 0.0000132959321490\n",
      "Epoch: 9090/20000, Loss: 0.0000082956839833\n",
      "Epoch: 9100/20000, Loss: 0.0000121729844977\n",
      "Epoch: 9110/20000, Loss: 0.0000046858035603\n",
      "Epoch: 9120/20000, Loss: 0.0000013017513538\n",
      "Epoch: 9130/20000, Loss: 0.0000015227917629\n",
      "Epoch: 9140/20000, Loss: 0.0000009277976574\n",
      "Epoch: 9150/20000, Loss: 0.0000009026448424\n",
      "Epoch: 9160/20000, Loss: 0.0000008244298897\n",
      "Epoch: 9170/20000, Loss: 0.0000007758452512\n",
      "Epoch: 9180/20000, Loss: 0.0000007472551715\n",
      "Epoch: 9190/20000, Loss: 0.0000007243384630\n",
      "Epoch: 9200/20000, Loss: 0.0000007045300663\n",
      "Epoch: 9210/20000, Loss: 0.0000006868836522\n",
      "Epoch: 9220/20000, Loss: 0.0000006706615068\n",
      "Epoch: 9230/20000, Loss: 0.0000006560758266\n",
      "Epoch: 9240/20000, Loss: 0.0000006427309245\n",
      "Epoch: 9250/20000, Loss: 0.0000006335293961\n",
      "Epoch: 9260/20000, Loss: 0.0000007618435234\n",
      "Epoch: 9270/20000, Loss: 0.0000115631937661\n",
      "Epoch: 9280/20000, Loss: 0.0000526797302882\n",
      "Epoch: 9290/20000, Loss: 0.0014857151545584\n",
      "Epoch: 9300/20000, Loss: 0.0000830935168779\n",
      "Epoch: 9310/20000, Loss: 0.0000325445180351\n",
      "Epoch: 9320/20000, Loss: 0.0000198194429686\n",
      "Epoch: 9330/20000, Loss: 0.0000098514028650\n",
      "Epoch: 9340/20000, Loss: 0.0000033793044167\n",
      "Epoch: 9350/20000, Loss: 0.0000018046126797\n",
      "Epoch: 9360/20000, Loss: 0.0000011725760487\n",
      "Epoch: 9370/20000, Loss: 0.0000010689930150\n",
      "Epoch: 9380/20000, Loss: 0.0000009589958836\n",
      "Epoch: 9390/20000, Loss: 0.0000008282641488\n",
      "Epoch: 9400/20000, Loss: 0.0000007842936043\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 9410/20000, Loss: 0.0000007466666148\n",
      "Epoch: 9420/20000, Loss: 0.0000007150937336\n",
      "Epoch: 9430/20000, Loss: 0.0000006887012205\n",
      "Epoch: 9440/20000, Loss: 0.0000006658531220\n",
      "Epoch: 9450/20000, Loss: 0.0000006452227694\n",
      "Epoch: 9460/20000, Loss: 0.0000006265727848\n",
      "Epoch: 9470/20000, Loss: 0.0000006106575938\n",
      "Epoch: 9480/20000, Loss: 0.0000007295687965\n",
      "Epoch: 9490/20000, Loss: 0.0000069463549153\n",
      "Epoch: 9500/20000, Loss: 0.0000022920905849\n",
      "Epoch: 9510/20000, Loss: 0.0000015145627685\n",
      "Epoch: 9520/20000, Loss: 0.0000034168544971\n",
      "Epoch: 9530/20000, Loss: 0.0000392828515032\n",
      "Epoch: 9540/20000, Loss: 0.0000600581115577\n",
      "Epoch: 9550/20000, Loss: 0.0000880083171069\n",
      "Epoch: 9560/20000, Loss: 0.0000614716554992\n",
      "Epoch: 9570/20000, Loss: 0.0000217377291847\n",
      "Epoch: 9580/20000, Loss: 0.0000055139939832\n",
      "Epoch: 9590/20000, Loss: 0.0000029383566016\n",
      "Epoch: 9600/20000, Loss: 0.0000101366222225\n",
      "Epoch: 9610/20000, Loss: 0.0000675206902088\n",
      "Epoch: 9620/20000, Loss: 0.0002551514189690\n",
      "Epoch: 9630/20000, Loss: 0.0000618771882728\n",
      "Epoch: 9640/20000, Loss: 0.0000096676958492\n",
      "Epoch: 9650/20000, Loss: 0.0000009575707054\n",
      "Epoch: 9660/20000, Loss: 0.0000055153309404\n",
      "Epoch: 9670/20000, Loss: 0.0000011525003174\n",
      "Epoch: 9680/20000, Loss: 0.0000028738793389\n",
      "Epoch: 9690/20000, Loss: 0.0000065163876570\n",
      "Epoch: 9700/20000, Loss: 0.0000590504787397\n",
      "Epoch: 9710/20000, Loss: 0.0003785431908909\n",
      "Epoch: 9720/20000, Loss: 0.0001022234428092\n",
      "Epoch: 9730/20000, Loss: 0.0000352575807483\n",
      "Epoch: 9740/20000, Loss: 0.0000109203920147\n",
      "Epoch: 9750/20000, Loss: 0.0000026587990760\n",
      "Epoch: 9760/20000, Loss: 0.0000010060821296\n",
      "Epoch: 9770/20000, Loss: 0.0000015729584675\n",
      "Epoch: 9780/20000, Loss: 0.0000006476716976\n",
      "Epoch: 9790/20000, Loss: 0.0000006661057341\n",
      "Epoch: 9800/20000, Loss: 0.0000013432335209\n",
      "Epoch: 9810/20000, Loss: 0.0000174204233190\n",
      "Epoch: 9820/20000, Loss: 0.0005364654352888\n",
      "Epoch: 9830/20000, Loss: 0.0002238949091407\n",
      "Epoch: 9840/20000, Loss: 0.0000927479486563\n",
      "Epoch: 9850/20000, Loss: 0.0000065082567744\n",
      "Epoch: 9860/20000, Loss: 0.0000108559806904\n",
      "Epoch: 9870/20000, Loss: 0.0000050186158660\n",
      "Epoch: 9880/20000, Loss: 0.0000017376332835\n",
      "Epoch: 9890/20000, Loss: 0.0000010874393865\n",
      "Epoch: 9900/20000, Loss: 0.0000008132940366\n",
      "Epoch: 9910/20000, Loss: 0.0000006673369626\n",
      "Epoch: 9920/20000, Loss: 0.0000005845465694\n",
      "Epoch: 9930/20000, Loss: 0.0000008695500355\n",
      "Epoch: 9940/20000, Loss: 0.0000057430343077\n",
      "Epoch: 9950/20000, Loss: 0.0000017205792346\n",
      "Epoch: 9960/20000, Loss: 0.0000022550802896\n",
      "Epoch: 9970/20000, Loss: 0.0000354201038135\n",
      "Epoch: 9980/20000, Loss: 0.0004256508545950\n",
      "Epoch: 9990/20000, Loss: 0.0001893487497000\n",
      "Epoch: 10000/20000, Loss: 0.0000497744658787\n",
      "Epoch: 10010/20000, Loss: 0.0000201308703254\n",
      "Epoch: 10020/20000, Loss: 0.0000078409557318\n",
      "Epoch: 10030/20000, Loss: 0.0000043560667109\n",
      "Epoch: 10040/20000, Loss: 0.0000020490826955\n",
      "Epoch: 10050/20000, Loss: 0.0000009998375390\n",
      "Epoch: 10060/20000, Loss: 0.0000008551182304\n",
      "Epoch: 10070/20000, Loss: 0.0000007096472245\n",
      "Epoch: 10080/20000, Loss: 0.0000006522706713\n",
      "Epoch: 10090/20000, Loss: 0.0000006270383892\n",
      "Epoch: 10100/20000, Loss: 0.0000006675579129\n",
      "Epoch: 10110/20000, Loss: 0.0000045216693252\n",
      "Epoch: 10120/20000, Loss: 0.0003779204271268\n",
      "Epoch: 10130/20000, Loss: 0.0001354096166324\n",
      "Epoch: 10140/20000, Loss: 0.0001066508993972\n",
      "Epoch: 10150/20000, Loss: 0.0000272532288363\n",
      "Epoch: 10160/20000, Loss: 0.0000097758875199\n",
      "Epoch: 10170/20000, Loss: 0.0000049108352869\n",
      "Epoch: 10180/20000, Loss: 0.0000017461007928\n",
      "Epoch: 10190/20000, Loss: 0.0000010709405842\n",
      "Epoch: 10200/20000, Loss: 0.0000008269733485\n",
      "Epoch: 10210/20000, Loss: 0.0000006981978231\n",
      "Epoch: 10220/20000, Loss: 0.0000006386043196\n",
      "Epoch: 10230/20000, Loss: 0.0000006087411748\n",
      "Epoch: 10240/20000, Loss: 0.0000005901734426\n",
      "Epoch: 10250/20000, Loss: 0.0000005749070624\n",
      "Epoch: 10260/20000, Loss: 0.0000005721237244\n",
      "Epoch: 10270/20000, Loss: 0.0000007706775591\n",
      "Epoch: 10280/20000, Loss: 0.0000122883629956\n",
      "Epoch: 10290/20000, Loss: 0.0006290528108366\n",
      "Epoch: 10300/20000, Loss: 0.0002845497801900\n",
      "Epoch: 10310/20000, Loss: 0.0000766995362937\n",
      "Epoch: 10320/20000, Loss: 0.0000122727351481\n",
      "Epoch: 10330/20000, Loss: 0.0000079944584286\n",
      "Epoch: 10340/20000, Loss: 0.0000047892222028\n",
      "Epoch: 10350/20000, Loss: 0.0000018615824047\n",
      "Epoch: 10360/20000, Loss: 0.0000013031747130\n",
      "Epoch: 10370/20000, Loss: 0.0000008333322512\n",
      "Epoch: 10380/20000, Loss: 0.0000007174949701\n",
      "Epoch: 10390/20000, Loss: 0.0000006514003417\n",
      "Epoch: 10400/20000, Loss: 0.0000006198313827\n",
      "Epoch: 10410/20000, Loss: 0.0000006011122196\n",
      "Epoch: 10420/20000, Loss: 0.0000005925902542\n",
      "Epoch: 10430/20000, Loss: 0.0000008208245958\n",
      "Epoch: 10440/20000, Loss: 0.0000171448173205\n",
      "Epoch: 10450/20000, Loss: 0.0005472218617797\n",
      "Epoch: 10460/20000, Loss: 0.0001377204171149\n",
      "Epoch: 10470/20000, Loss: 0.0000425645666837\n",
      "Epoch: 10480/20000, Loss: 0.0000215379332076\n",
      "Epoch: 10490/20000, Loss: 0.0000069521665864\n",
      "Epoch: 10500/20000, Loss: 0.0000035291120639\n",
      "Epoch: 10510/20000, Loss: 0.0000013771185650\n",
      "Epoch: 10520/20000, Loss: 0.0000008199842227\n",
      "Epoch: 10530/20000, Loss: 0.0000008118411188\n",
      "Epoch: 10540/20000, Loss: 0.0000006930800396\n",
      "Epoch: 10550/20000, Loss: 0.0000006865096793\n",
      "Epoch: 10560/20000, Loss: 0.0000019849444470\n",
      "Epoch: 10570/20000, Loss: 0.0000656220800010\n",
      "Epoch: 10580/20000, Loss: 0.0005077624809928\n",
      "Epoch: 10590/20000, Loss: 0.0001095244660974\n",
      "Epoch: 10600/20000, Loss: 0.0000468153994007\n",
      "Epoch: 10610/20000, Loss: 0.0000174084561877\n",
      "Epoch: 10620/20000, Loss: 0.0000067664755079\n",
      "Epoch: 10630/20000, Loss: 0.0000030947671803\n",
      "Epoch: 10640/20000, Loss: 0.0000011804418136\n",
      "Epoch: 10650/20000, Loss: 0.0000009840206303\n",
      "Epoch: 10660/20000, Loss: 0.0000007012653214\n",
      "Epoch: 10670/20000, Loss: 0.0000006890041391\n",
      "Epoch: 10680/20000, Loss: 0.0000016695415752\n",
      "Epoch: 10690/20000, Loss: 0.0000488156365464\n",
      "Epoch: 10700/20000, Loss: 0.0003048515936825\n",
      "Epoch: 10710/20000, Loss: 0.0001288863568334\n",
      "Epoch: 10720/20000, Loss: 0.0000230718833336\n",
      "Epoch: 10730/20000, Loss: 0.0000138298883030\n",
      "Epoch: 10740/20000, Loss: 0.0000036676804029\n",
      "Epoch: 10750/20000, Loss: 0.0000020128952656\n",
      "Epoch: 10760/20000, Loss: 0.0000013788888964\n",
      "Epoch: 10770/20000, Loss: 0.0000007914491107\n",
      "Epoch: 10780/20000, Loss: 0.0000007080644764\n",
      "Epoch: 10790/20000, Loss: 0.0000006474614338\n",
      "Epoch: 10800/20000, Loss: 0.0000009792258879\n",
      "Epoch: 10810/20000, Loss: 0.0000284128873318\n",
      "Epoch: 10820/20000, Loss: 0.0008199785952456\n",
      "Epoch: 10830/20000, Loss: 0.0002020491665462\n",
      "Epoch: 10840/20000, Loss: 0.0000297806200251\n",
      "Epoch: 10850/20000, Loss: 0.0000198540692509\n",
      "Epoch: 10860/20000, Loss: 0.0000072347447713\n",
      "Epoch: 10870/20000, Loss: 0.0000021951680083\n",
      "Epoch: 10880/20000, Loss: 0.0000014648626347\n",
      "Epoch: 10890/20000, Loss: 0.0000009635633660\n",
      "Epoch: 10900/20000, Loss: 0.0000007596560749\n",
      "Epoch: 10910/20000, Loss: 0.0000006897180924\n",
      "Epoch: 10920/20000, Loss: 0.0000006677923921\n",
      "Epoch: 10930/20000, Loss: 0.0000007753960176\n",
      "Epoch: 10940/20000, Loss: 0.0000059569792938\n",
      "Epoch: 10950/20000, Loss: 0.0000012643538412\n",
      "Epoch: 10960/20000, Loss: 0.0000021589335120\n",
      "Epoch: 10970/20000, Loss: 0.0000540479704796\n",
      "Epoch: 10980/20000, Loss: 0.0007541300146841\n",
      "Epoch: 10990/20000, Loss: 0.0000797093453002\n",
      "Epoch: 11000/20000, Loss: 0.0000331538394676\n",
      "Epoch: 11010/20000, Loss: 0.0000276984555967\n",
      "Epoch: 11020/20000, Loss: 0.0000080290146798\n",
      "Epoch: 11030/20000, Loss: 0.0000021274340725\n",
      "Epoch: 11040/20000, Loss: 0.0000014339071868\n",
      "Epoch: 11050/20000, Loss: 0.0000009367316807\n",
      "Epoch: 11060/20000, Loss: 0.0000007956024319\n",
      "Epoch: 11070/20000, Loss: 0.0000006759722169\n",
      "Epoch: 11080/20000, Loss: 0.0000006703274380\n",
      "Epoch: 11090/20000, Loss: 0.0000006281863421\n",
      "Epoch: 11100/20000, Loss: 0.0000006182676771\n",
      "Epoch: 11110/20000, Loss: 0.0000006474712109\n",
      "Epoch: 11120/20000, Loss: 0.0000019130891360\n",
      "Epoch: 11130/20000, Loss: 0.0000856197948451\n",
      "Epoch: 11140/20000, Loss: 0.0004570933233481\n",
      "Epoch: 11150/20000, Loss: 0.0000827857365948\n",
      "Epoch: 11160/20000, Loss: 0.0000508094199176\n",
      "Epoch: 11170/20000, Loss: 0.0000322861887980\n",
      "Epoch: 11180/20000, Loss: 0.0000088016395239\n",
      "Epoch: 11190/20000, Loss: 0.0000034243973914\n",
      "Epoch: 11200/20000, Loss: 0.0000017420687755\n",
      "Epoch: 11210/20000, Loss: 0.0000010557422456\n",
      "Epoch: 11220/20000, Loss: 0.0000008064893109\n",
      "Epoch: 11230/20000, Loss: 0.0000007736151701\n",
      "Epoch: 11240/20000, Loss: 0.0000006718329360\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 11250/20000, Loss: 0.0000006642117114\n",
      "Epoch: 11260/20000, Loss: 0.0000007557899266\n",
      "Epoch: 11270/20000, Loss: 0.0000034231275094\n",
      "Epoch: 11280/20000, Loss: 0.0001494757889304\n",
      "Epoch: 11290/20000, Loss: 0.0001406385854352\n",
      "Epoch: 11300/20000, Loss: 0.0000193119612959\n",
      "Epoch: 11310/20000, Loss: 0.0000142879443956\n",
      "Epoch: 11320/20000, Loss: 0.0000075316297625\n",
      "Epoch: 11330/20000, Loss: 0.0000045255278565\n",
      "Epoch: 11340/20000, Loss: 0.0000023307375159\n",
      "Epoch: 11350/20000, Loss: 0.0000015679411263\n",
      "Epoch: 11360/20000, Loss: 0.0000008624261909\n",
      "Epoch: 11370/20000, Loss: 0.0000007835639053\n",
      "Epoch: 11380/20000, Loss: 0.0000008768683415\n",
      "Epoch: 11390/20000, Loss: 0.0000040279396671\n",
      "Epoch: 11400/20000, Loss: 0.0001317695569014\n",
      "Epoch: 11410/20000, Loss: 0.0002288420946570\n",
      "Epoch: 11420/20000, Loss: 0.0000681876699673\n",
      "Epoch: 11430/20000, Loss: 0.0000326778754243\n",
      "Epoch: 11440/20000, Loss: 0.0000077909917309\n",
      "Epoch: 11450/20000, Loss: 0.0000029351351714\n",
      "Epoch: 11460/20000, Loss: 0.0000021752910015\n",
      "Epoch: 11470/20000, Loss: 0.0000009794622429\n",
      "Epoch: 11480/20000, Loss: 0.0000008984904412\n",
      "Epoch: 11490/20000, Loss: 0.0000015172398662\n",
      "Epoch: 11500/20000, Loss: 0.0000236005107581\n",
      "Epoch: 11510/20000, Loss: 0.0004460404452402\n",
      "Epoch: 11520/20000, Loss: 0.0001076507323887\n",
      "Epoch: 11530/20000, Loss: 0.0000228174412769\n",
      "Epoch: 11540/20000, Loss: 0.0000128092688101\n",
      "Epoch: 11550/20000, Loss: 0.0000062992007770\n",
      "Epoch: 11560/20000, Loss: 0.0000030077262636\n",
      "Epoch: 11570/20000, Loss: 0.0000017157911998\n",
      "Epoch: 11580/20000, Loss: 0.0000023454517759\n",
      "Epoch: 11590/20000, Loss: 0.0000250803714152\n",
      "Epoch: 11600/20000, Loss: 0.0002356973855058\n",
      "Epoch: 11610/20000, Loss: 0.0000329181239067\n",
      "Epoch: 11620/20000, Loss: 0.0000104651189758\n",
      "Epoch: 11630/20000, Loss: 0.0000114344311442\n",
      "Epoch: 11640/20000, Loss: 0.0000041563453124\n",
      "Epoch: 11650/20000, Loss: 0.0000025872698188\n",
      "Epoch: 11660/20000, Loss: 0.0000011345053963\n",
      "Epoch: 11670/20000, Loss: 0.0000015123373487\n",
      "Epoch: 11680/20000, Loss: 0.0000197412973648\n",
      "Epoch: 11690/20000, Loss: 0.0005662231706083\n",
      "Epoch: 11700/20000, Loss: 0.0002276328013977\n",
      "Epoch: 11710/20000, Loss: 0.0000995759110083\n",
      "Epoch: 11720/20000, Loss: 0.0000219319808821\n",
      "Epoch: 11730/20000, Loss: 0.0000070222808972\n",
      "Epoch: 11740/20000, Loss: 0.0000028523363653\n",
      "Epoch: 11750/20000, Loss: 0.0000014883628410\n",
      "Epoch: 11760/20000, Loss: 0.0000011265216244\n",
      "Epoch: 11770/20000, Loss: 0.0000009145600757\n",
      "Epoch: 11780/20000, Loss: 0.0000007784644254\n",
      "Epoch: 11790/20000, Loss: 0.0000007378448004\n",
      "Epoch: 11800/20000, Loss: 0.0000010359516409\n",
      "Epoch: 11810/20000, Loss: 0.0000037637234982\n",
      "Epoch: 11820/20000, Loss: 0.0000324505199387\n",
      "Epoch: 11830/20000, Loss: 0.0005050734034739\n",
      "Epoch: 11840/20000, Loss: 0.0001364695490338\n",
      "Epoch: 11850/20000, Loss: 0.0000703281184542\n",
      "Epoch: 11860/20000, Loss: 0.0000236267842411\n",
      "Epoch: 11870/20000, Loss: 0.0000069444222390\n",
      "Epoch: 11880/20000, Loss: 0.0000026765362691\n",
      "Epoch: 11890/20000, Loss: 0.0000016007586510\n",
      "Epoch: 11900/20000, Loss: 0.0000013634517018\n",
      "Epoch: 11910/20000, Loss: 0.0000016448569795\n",
      "Epoch: 11920/20000, Loss: 0.0000018850961396\n",
      "Epoch: 11930/20000, Loss: 0.0000077798986240\n",
      "Epoch: 11940/20000, Loss: 0.0001924940734170\n",
      "Epoch: 11950/20000, Loss: 0.0001217267417815\n",
      "Epoch: 11960/20000, Loss: 0.0007216170197353\n",
      "Epoch: 11970/20000, Loss: 0.0010501646902412\n",
      "Epoch: 11980/20000, Loss: 0.0049942890182137\n",
      "Epoch: 11990/20000, Loss: 0.0016524511156604\n",
      "Epoch: 12000/20000, Loss: 0.0007544076070189\n",
      "Epoch: 12010/20000, Loss: 0.0002689446846489\n",
      "Epoch: 12020/20000, Loss: 0.0001034873639583\n",
      "Epoch: 12030/20000, Loss: 0.0000390634122596\n",
      "Epoch: 12040/20000, Loss: 0.0000160158760991\n",
      "Epoch: 12050/20000, Loss: 0.0000074012159530\n",
      "Epoch: 12060/20000, Loss: 0.0000046617083171\n",
      "Epoch: 12070/20000, Loss: 0.0000035060083974\n",
      "Epoch: 12080/20000, Loss: 0.0000029942477795\n",
      "Epoch: 12090/20000, Loss: 0.0000027495652830\n",
      "Epoch: 12100/20000, Loss: 0.0000025859644666\n",
      "Epoch: 12110/20000, Loss: 0.0000024700216272\n",
      "Epoch: 12120/20000, Loss: 0.0000023724621769\n",
      "Epoch: 12130/20000, Loss: 0.0000022862523110\n",
      "Epoch: 12140/20000, Loss: 0.0000022080989766\n",
      "Epoch: 12150/20000, Loss: 0.0000021353957891\n",
      "Epoch: 12160/20000, Loss: 0.0000020674453935\n",
      "Epoch: 12170/20000, Loss: 0.0000020032803150\n",
      "Epoch: 12180/20000, Loss: 0.0000019424264792\n",
      "Epoch: 12190/20000, Loss: 0.0000018852140329\n",
      "Epoch: 12200/20000, Loss: 0.0000018332382297\n",
      "Epoch: 12210/20000, Loss: 0.0000019276751573\n",
      "Epoch: 12220/20000, Loss: 0.0000093141097750\n",
      "Epoch: 12230/20000, Loss: 0.0002580142754596\n",
      "Epoch: 12240/20000, Loss: 0.0001766941131791\n",
      "Epoch: 12250/20000, Loss: 0.0000109208003778\n",
      "Epoch: 12260/20000, Loss: 0.0000232514830714\n",
      "Epoch: 12270/20000, Loss: 0.0000120550312204\n",
      "Epoch: 12280/20000, Loss: 0.0000030128794606\n",
      "Epoch: 12290/20000, Loss: 0.0000025949802875\n",
      "Epoch: 12300/20000, Loss: 0.0000020205955025\n",
      "Epoch: 12310/20000, Loss: 0.0000016936717202\n",
      "Epoch: 12320/20000, Loss: 0.0000015595608147\n",
      "Epoch: 12330/20000, Loss: 0.0000015226811456\n",
      "Epoch: 12340/20000, Loss: 0.0000014722427295\n",
      "Epoch: 12350/20000, Loss: 0.0000014342006125\n",
      "Epoch: 12360/20000, Loss: 0.0000014032792706\n",
      "Epoch: 12370/20000, Loss: 0.0000013758634623\n",
      "Epoch: 12380/20000, Loss: 0.0000013962206822\n",
      "Epoch: 12390/20000, Loss: 0.0000045177698667\n",
      "Epoch: 12400/20000, Loss: 0.0000036377966808\n",
      "Epoch: 12410/20000, Loss: 0.0000018488159412\n",
      "Epoch: 12420/20000, Loss: 0.0000041560024329\n",
      "Epoch: 12430/20000, Loss: 0.0000554861908313\n",
      "Epoch: 12440/20000, Loss: 0.0003878162242472\n",
      "Epoch: 12450/20000, Loss: 0.0000910935050342\n",
      "Epoch: 12460/20000, Loss: 0.0000047725975492\n",
      "Epoch: 12470/20000, Loss: 0.0000041045982471\n",
      "Epoch: 12480/20000, Loss: 0.0000047054390961\n",
      "Epoch: 12490/20000, Loss: 0.0000028509541607\n",
      "Epoch: 12500/20000, Loss: 0.0000016561278926\n",
      "Epoch: 12510/20000, Loss: 0.0000012514174159\n",
      "Epoch: 12520/20000, Loss: 0.0000013614853742\n",
      "Epoch: 12530/20000, Loss: 0.0000011838910723\n",
      "Epoch: 12540/20000, Loss: 0.0000012114002175\n",
      "Epoch: 12550/20000, Loss: 0.0000016385713479\n",
      "Epoch: 12560/20000, Loss: 0.0000148338995132\n",
      "Epoch: 12570/20000, Loss: 0.0005425655981526\n",
      "Epoch: 12580/20000, Loss: 0.0002537587715778\n",
      "Epoch: 12590/20000, Loss: 0.0000069972893471\n",
      "Epoch: 12600/20000, Loss: 0.0000326034132740\n",
      "Epoch: 12610/20000, Loss: 0.0000040263130359\n",
      "Epoch: 12620/20000, Loss: 0.0000046118198043\n",
      "Epoch: 12630/20000, Loss: 0.0000020125805804\n",
      "Epoch: 12640/20000, Loss: 0.0000016334983002\n",
      "Epoch: 12650/20000, Loss: 0.0000013566991584\n",
      "Epoch: 12660/20000, Loss: 0.0000012431141840\n",
      "Epoch: 12670/20000, Loss: 0.0000011892225302\n",
      "Epoch: 12680/20000, Loss: 0.0000011531328710\n",
      "Epoch: 12690/20000, Loss: 0.0000011336562693\n",
      "Epoch: 12700/20000, Loss: 0.0000012263074041\n",
      "Epoch: 12710/20000, Loss: 0.0000055986733969\n",
      "Epoch: 12720/20000, Loss: 0.0000448485516245\n",
      "Epoch: 12730/20000, Loss: 0.0001477853511460\n",
      "Epoch: 12740/20000, Loss: 0.0000582750071771\n",
      "Epoch: 12750/20000, Loss: 0.0000273304849543\n",
      "Epoch: 12760/20000, Loss: 0.0000148838480527\n",
      "Epoch: 12770/20000, Loss: 0.0000086420441221\n",
      "Epoch: 12780/20000, Loss: 0.0000028374138310\n",
      "Epoch: 12790/20000, Loss: 0.0000024180540095\n",
      "Epoch: 12800/20000, Loss: 0.0000012261623397\n",
      "Epoch: 12810/20000, Loss: 0.0000011624055105\n",
      "Epoch: 12820/20000, Loss: 0.0000029571981486\n",
      "Epoch: 12830/20000, Loss: 0.0001321687450400\n",
      "Epoch: 12840/20000, Loss: 0.0001316384732490\n",
      "Epoch: 12850/20000, Loss: 0.0001613102213014\n",
      "Epoch: 12860/20000, Loss: 0.0000136725439006\n",
      "Epoch: 12870/20000, Loss: 0.0000205150317925\n",
      "Epoch: 12880/20000, Loss: 0.0000041489593059\n",
      "Epoch: 12890/20000, Loss: 0.0000043559689402\n",
      "Epoch: 12900/20000, Loss: 0.0000016877179405\n",
      "Epoch: 12910/20000, Loss: 0.0000013274677713\n",
      "Epoch: 12920/20000, Loss: 0.0000012451823750\n",
      "Epoch: 12930/20000, Loss: 0.0000011582535535\n",
      "Epoch: 12940/20000, Loss: 0.0000011035963325\n",
      "Epoch: 12950/20000, Loss: 0.0000011889426332\n",
      "Epoch: 12960/20000, Loss: 0.0000062486205934\n",
      "Epoch: 12970/20000, Loss: 0.0000036878163883\n",
      "Epoch: 12980/20000, Loss: 0.0000023374218472\n",
      "Epoch: 12990/20000, Loss: 0.0000099701837826\n",
      "Epoch: 13000/20000, Loss: 0.0002415127382847\n",
      "Epoch: 13010/20000, Loss: 0.0000296910420730\n",
      "Epoch: 13020/20000, Loss: 0.0001082586095436\n",
      "Epoch: 13030/20000, Loss: 0.0000295188219752\n",
      "Epoch: 13040/20000, Loss: 0.0000077027516454\n",
      "Epoch: 13050/20000, Loss: 0.0000062546992012\n",
      "Epoch: 13060/20000, Loss: 0.0000031004922221\n",
      "Epoch: 13070/20000, Loss: 0.0000017501703269\n",
      "Epoch: 13080/20000, Loss: 0.0000013755757209\n",
      "Epoch: 13090/20000, Loss: 0.0000012111813703\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 13100/20000, Loss: 0.0000010640274013\n",
      "Epoch: 13110/20000, Loss: 0.0000010373278201\n",
      "Epoch: 13120/20000, Loss: 0.0000010029248187\n",
      "Epoch: 13130/20000, Loss: 0.0000010784768847\n",
      "Epoch: 13140/20000, Loss: 0.0000041094863263\n",
      "Epoch: 13150/20000, Loss: 0.0002011050964938\n",
      "Epoch: 13160/20000, Loss: 0.0000515820211149\n",
      "Epoch: 13170/20000, Loss: 0.0001604986900929\n",
      "Epoch: 13180/20000, Loss: 0.0000091766842161\n",
      "Epoch: 13190/20000, Loss: 0.0000221611826419\n",
      "Epoch: 13200/20000, Loss: 0.0000032815351005\n",
      "Epoch: 13210/20000, Loss: 0.0000031673200738\n",
      "Epoch: 13220/20000, Loss: 0.0000020895354282\n",
      "Epoch: 13230/20000, Loss: 0.0000013305912034\n",
      "Epoch: 13240/20000, Loss: 0.0000010711897858\n",
      "Epoch: 13250/20000, Loss: 0.0000010015317002\n",
      "Epoch: 13260/20000, Loss: 0.0000009684878250\n",
      "Epoch: 13270/20000, Loss: 0.0000010429397435\n",
      "Epoch: 13280/20000, Loss: 0.0000052483173931\n",
      "Epoch: 13290/20000, Loss: 0.0000022904762318\n",
      "Epoch: 13300/20000, Loss: 0.0000009787186173\n",
      "Epoch: 13310/20000, Loss: 0.0000020571712867\n",
      "Epoch: 13320/20000, Loss: 0.0000457852402178\n",
      "Epoch: 13330/20000, Loss: 0.0009203950176015\n",
      "Epoch: 13340/20000, Loss: 0.0001486877299612\n",
      "Epoch: 13350/20000, Loss: 0.0000463044198113\n",
      "Epoch: 13360/20000, Loss: 0.0000244361217483\n",
      "Epoch: 13370/20000, Loss: 0.0000048841502576\n",
      "Epoch: 13380/20000, Loss: 0.0000043490140342\n",
      "Epoch: 13390/20000, Loss: 0.0000023627628707\n",
      "Epoch: 13400/20000, Loss: 0.0000013841093960\n",
      "Epoch: 13410/20000, Loss: 0.0000010725973425\n",
      "Epoch: 13420/20000, Loss: 0.0000009684730458\n",
      "Epoch: 13430/20000, Loss: 0.0000008811446151\n",
      "Epoch: 13440/20000, Loss: 0.0000008353788985\n",
      "Epoch: 13450/20000, Loss: 0.0000008113535728\n",
      "Epoch: 13460/20000, Loss: 0.0000007937700275\n",
      "Epoch: 13470/20000, Loss: 0.0000008678518384\n",
      "Epoch: 13480/20000, Loss: 0.0000046240274969\n",
      "Epoch: 13490/20000, Loss: 0.0002843362744898\n",
      "Epoch: 13500/20000, Loss: 0.0000677823991282\n",
      "Epoch: 13510/20000, Loss: 0.0001911234139698\n",
      "Epoch: 13520/20000, Loss: 0.0000217606902879\n",
      "Epoch: 13530/20000, Loss: 0.0000194947970158\n",
      "Epoch: 13540/20000, Loss: 0.0000033783373965\n",
      "Epoch: 13550/20000, Loss: 0.0000041938851609\n",
      "Epoch: 13560/20000, Loss: 0.0000014927875327\n",
      "Epoch: 13570/20000, Loss: 0.0000010299160067\n",
      "Epoch: 13580/20000, Loss: 0.0000009505195067\n",
      "Epoch: 13590/20000, Loss: 0.0000008876771744\n",
      "Epoch: 13600/20000, Loss: 0.0000008480150200\n",
      "Epoch: 13610/20000, Loss: 0.0000010852337482\n",
      "Epoch: 13620/20000, Loss: 0.0000047734015425\n",
      "Epoch: 13630/20000, Loss: 0.0000028338265565\n",
      "Epoch: 13640/20000, Loss: 0.0000015643084907\n",
      "Epoch: 13650/20000, Loss: 0.0000014443808141\n",
      "Epoch: 13660/20000, Loss: 0.0000129074933284\n",
      "Epoch: 13670/20000, Loss: 0.0006480445154011\n",
      "Epoch: 13680/20000, Loss: 0.0003095196443610\n",
      "Epoch: 13690/20000, Loss: 0.0000593070872128\n",
      "Epoch: 13700/20000, Loss: 0.0000267254363280\n",
      "Epoch: 13710/20000, Loss: 0.0000152351267388\n",
      "Epoch: 13720/20000, Loss: 0.0000018165545725\n",
      "Epoch: 13730/20000, Loss: 0.0000025580106922\n",
      "Epoch: 13740/20000, Loss: 0.0000017869319890\n",
      "Epoch: 13750/20000, Loss: 0.0000014983066876\n",
      "Epoch: 13760/20000, Loss: 0.0000049266946007\n",
      "Epoch: 13770/20000, Loss: 0.0000103284191937\n",
      "Epoch: 13780/20000, Loss: 0.0000052567729654\n",
      "Epoch: 13790/20000, Loss: 0.0000020406450858\n",
      "Epoch: 13800/20000, Loss: 0.0000014482989172\n",
      "Epoch: 13810/20000, Loss: 0.0000009870371969\n",
      "Epoch: 13820/20000, Loss: 0.0000007596823366\n",
      "Epoch: 13830/20000, Loss: 0.0000016710115460\n",
      "Epoch: 13840/20000, Loss: 0.0001236232928932\n",
      "Epoch: 13850/20000, Loss: 0.0003342570271343\n",
      "Epoch: 13860/20000, Loss: 0.0003129547403660\n",
      "Epoch: 13870/20000, Loss: 0.0000591215175518\n",
      "Epoch: 13880/20000, Loss: 0.0000085137298811\n",
      "Epoch: 13890/20000, Loss: 0.0000099226945167\n",
      "Epoch: 13900/20000, Loss: 0.0000071967579061\n",
      "Epoch: 13910/20000, Loss: 0.0000022964384243\n",
      "Epoch: 13920/20000, Loss: 0.0000018344376258\n",
      "Epoch: 13930/20000, Loss: 0.0000011394652120\n",
      "Epoch: 13940/20000, Loss: 0.0000016127919480\n",
      "Epoch: 13950/20000, Loss: 0.0000021485648176\n",
      "Epoch: 13960/20000, Loss: 0.0000012569851151\n",
      "Epoch: 13970/20000, Loss: 0.0000009245920296\n",
      "Epoch: 13980/20000, Loss: 0.0000011116553651\n",
      "Epoch: 13990/20000, Loss: 0.0000034526128729\n",
      "Epoch: 14000/20000, Loss: 0.0000019649039587\n",
      "Epoch: 14010/20000, Loss: 0.0000019399558369\n",
      "Epoch: 14020/20000, Loss: 0.0000023181198685\n",
      "Epoch: 14030/20000, Loss: 0.0000010498666825\n",
      "Epoch: 14040/20000, Loss: 0.0000069659267865\n",
      "Epoch: 14050/20000, Loss: 0.0003591837303247\n",
      "Epoch: 14060/20000, Loss: 0.0000902597021195\n",
      "Epoch: 14070/20000, Loss: 0.0001340151065961\n",
      "Epoch: 14080/20000, Loss: 0.0000186574470717\n",
      "Epoch: 14090/20000, Loss: 0.0000116360588436\n",
      "Epoch: 14100/20000, Loss: 0.0000067846553975\n",
      "Epoch: 14110/20000, Loss: 0.0000019873261863\n",
      "Epoch: 14120/20000, Loss: 0.0000011043948689\n",
      "Epoch: 14130/20000, Loss: 0.0000015869903791\n",
      "Epoch: 14140/20000, Loss: 0.0000017475101686\n",
      "Epoch: 14150/20000, Loss: 0.0000008046524158\n",
      "Epoch: 14160/20000, Loss: 0.0000016169072978\n",
      "Epoch: 14170/20000, Loss: 0.0000016249476857\n",
      "Epoch: 14180/20000, Loss: 0.0000009923332982\n",
      "Epoch: 14190/20000, Loss: 0.0000016853338138\n",
      "Epoch: 14200/20000, Loss: 0.0000278788374999\n",
      "Epoch: 14210/20000, Loss: 0.0007991144666448\n",
      "Epoch: 14220/20000, Loss: 0.0003231664886698\n",
      "Epoch: 14230/20000, Loss: 0.0000516309846716\n",
      "Epoch: 14240/20000, Loss: 0.0000408888045058\n",
      "Epoch: 14250/20000, Loss: 0.0000207449811569\n",
      "Epoch: 14260/20000, Loss: 0.0000084401917775\n",
      "Epoch: 14270/20000, Loss: 0.0000044331495701\n",
      "Epoch: 14280/20000, Loss: 0.0000042599435801\n",
      "Epoch: 14290/20000, Loss: 0.0000023535289984\n",
      "Epoch: 14300/20000, Loss: 0.0000018880569996\n",
      "Epoch: 14310/20000, Loss: 0.0000026403777156\n",
      "Epoch: 14320/20000, Loss: 0.0000105645385702\n",
      "Epoch: 14330/20000, Loss: 0.0001665994059294\n",
      "Epoch: 14340/20000, Loss: 0.0001490876165917\n",
      "Epoch: 14350/20000, Loss: 0.0000271073804470\n",
      "Epoch: 14360/20000, Loss: 0.0000192206225620\n",
      "Epoch: 14370/20000, Loss: 0.0000070988789957\n",
      "Epoch: 14380/20000, Loss: 0.0000057155261857\n",
      "Epoch: 14390/20000, Loss: 0.0000026955292469\n",
      "Epoch: 14400/20000, Loss: 0.0000018064706637\n",
      "Epoch: 14410/20000, Loss: 0.0000016414289803\n",
      "Epoch: 14420/20000, Loss: 0.0000034573401990\n",
      "Epoch: 14430/20000, Loss: 0.0000020501611289\n",
      "Epoch: 14440/20000, Loss: 0.0000817557665869\n",
      "Epoch: 14450/20000, Loss: 0.0007219047402032\n",
      "Epoch: 14460/20000, Loss: 0.0000631733055343\n",
      "Epoch: 14470/20000, Loss: 0.0000539805078006\n",
      "Epoch: 14480/20000, Loss: 0.0000281330976577\n",
      "Epoch: 14490/20000, Loss: 0.0000057332795222\n",
      "Epoch: 14500/20000, Loss: 0.0000060889374254\n",
      "Epoch: 14510/20000, Loss: 0.0000023832731131\n",
      "Epoch: 14520/20000, Loss: 0.0000015102052657\n",
      "Epoch: 14530/20000, Loss: 0.0000013463853747\n",
      "Epoch: 14540/20000, Loss: 0.0000011437439298\n",
      "Epoch: 14550/20000, Loss: 0.0000011081383491\n",
      "Epoch: 14560/20000, Loss: 0.0000019328306280\n",
      "Epoch: 14570/20000, Loss: 0.0000016484287926\n",
      "Epoch: 14580/20000, Loss: 0.0000072957468547\n",
      "Epoch: 14590/20000, Loss: 0.0000018640409962\n",
      "Epoch: 14600/20000, Loss: 0.0000028732092687\n",
      "Epoch: 14610/20000, Loss: 0.0000214124993363\n",
      "Epoch: 14620/20000, Loss: 0.0005733756697737\n",
      "Epoch: 14630/20000, Loss: 0.0002225828648079\n",
      "Epoch: 14640/20000, Loss: 0.0000877402344486\n",
      "Epoch: 14650/20000, Loss: 0.0000127612993310\n",
      "Epoch: 14660/20000, Loss: 0.0000042291749196\n",
      "Epoch: 14670/20000, Loss: 0.0000033320359307\n",
      "Epoch: 14680/20000, Loss: 0.0000016985046614\n",
      "Epoch: 14690/20000, Loss: 0.0000010930075405\n",
      "Epoch: 14700/20000, Loss: 0.0000010362322200\n",
      "Epoch: 14710/20000, Loss: 0.0000037371612507\n",
      "Epoch: 14720/20000, Loss: 0.0000025062706754\n",
      "Epoch: 14730/20000, Loss: 0.0000019799963411\n",
      "Epoch: 14740/20000, Loss: 0.0000032956081668\n",
      "Epoch: 14750/20000, Loss: 0.0000563915455132\n",
      "Epoch: 14760/20000, Loss: 0.0009225918911397\n",
      "Epoch: 14770/20000, Loss: 0.0001845196529757\n",
      "Epoch: 14780/20000, Loss: 0.0000330431321345\n",
      "Epoch: 14790/20000, Loss: 0.0000325278197124\n",
      "Epoch: 14800/20000, Loss: 0.0000041106200115\n",
      "Epoch: 14810/20000, Loss: 0.0000033496826291\n",
      "Epoch: 14820/20000, Loss: 0.0000022041251668\n",
      "Epoch: 14830/20000, Loss: 0.0000014031596720\n",
      "Epoch: 14840/20000, Loss: 0.0000010247688351\n",
      "Epoch: 14850/20000, Loss: 0.0000009364006246\n",
      "Epoch: 14860/20000, Loss: 0.0000019851859179\n",
      "Epoch: 14870/20000, Loss: 0.0000028862405088\n",
      "Epoch: 14880/20000, Loss: 0.0000031569611565\n",
      "Epoch: 14890/20000, Loss: 0.0000159258215717\n",
      "Epoch: 14900/20000, Loss: 0.0000598764891038\n",
      "Epoch: 14910/20000, Loss: 0.0004897464532405\n",
      "Epoch: 14920/20000, Loss: 0.0001688066840870\n",
      "Epoch: 14930/20000, Loss: 0.0000507899458171\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 14940/20000, Loss: 0.0000158024213306\n",
      "Epoch: 14950/20000, Loss: 0.0000054455995269\n",
      "Epoch: 14960/20000, Loss: 0.0000043314071263\n",
      "Epoch: 14970/20000, Loss: 0.0000025700537662\n",
      "Epoch: 14980/20000, Loss: 0.0000015860541680\n",
      "Epoch: 14990/20000, Loss: 0.0000017592443555\n",
      "Epoch: 15000/20000, Loss: 0.0000105122608147\n",
      "Epoch: 15010/20000, Loss: 0.0002948034962174\n",
      "Epoch: 15020/20000, Loss: 0.0000080325035015\n",
      "Epoch: 15030/20000, Loss: 0.0000442219461547\n",
      "Epoch: 15040/20000, Loss: 0.0000110539913294\n",
      "Epoch: 15050/20000, Loss: 0.0000073505789260\n",
      "Epoch: 15060/20000, Loss: 0.0000028200622637\n",
      "Epoch: 15070/20000, Loss: 0.0000017826988596\n",
      "Epoch: 15080/20000, Loss: 0.0000010665221453\n",
      "Epoch: 15090/20000, Loss: 0.0000014568149709\n",
      "Epoch: 15100/20000, Loss: 0.0000035302557535\n",
      "Epoch: 15110/20000, Loss: 0.0000256592320511\n",
      "Epoch: 15120/20000, Loss: 0.0004798361915164\n",
      "Epoch: 15130/20000, Loss: 0.0001147977745859\n",
      "Epoch: 15140/20000, Loss: 0.0000248882370215\n",
      "Epoch: 15150/20000, Loss: 0.0000171375031641\n",
      "Epoch: 15160/20000, Loss: 0.0000063596498876\n",
      "Epoch: 15170/20000, Loss: 0.0000020069508082\n",
      "Epoch: 15180/20000, Loss: 0.0000016651705437\n",
      "Epoch: 15190/20000, Loss: 0.0000012975334585\n",
      "Epoch: 15200/20000, Loss: 0.0000012002016092\n",
      "Epoch: 15210/20000, Loss: 0.0000029895645639\n",
      "Epoch: 15220/20000, Loss: 0.0000066448419602\n",
      "Epoch: 15230/20000, Loss: 0.0000465564662591\n",
      "Epoch: 15240/20000, Loss: 0.0008390113362111\n",
      "Epoch: 15250/20000, Loss: 0.0002187165082432\n",
      "Epoch: 15260/20000, Loss: 0.0000434122557635\n",
      "Epoch: 15270/20000, Loss: 0.0000156254318426\n",
      "Epoch: 15280/20000, Loss: 0.0000053943053899\n",
      "Epoch: 15290/20000, Loss: 0.0000030258199786\n",
      "Epoch: 15300/20000, Loss: 0.0000016340109141\n",
      "Epoch: 15310/20000, Loss: 0.0000010628486962\n",
      "Epoch: 15320/20000, Loss: 0.0000009567322650\n",
      "Epoch: 15330/20000, Loss: 0.0000008681332133\n",
      "Epoch: 15340/20000, Loss: 0.0000044868206714\n",
      "Epoch: 15350/20000, Loss: 0.0000043545687731\n",
      "Epoch: 15360/20000, Loss: 0.0000082205606304\n",
      "Epoch: 15370/20000, Loss: 0.0000565862937947\n",
      "Epoch: 15380/20000, Loss: 0.0007057538605295\n",
      "Epoch: 15390/20000, Loss: 0.0002423283003736\n",
      "Epoch: 15400/20000, Loss: 0.0000664202816552\n",
      "Epoch: 15410/20000, Loss: 0.0000203395866265\n",
      "Epoch: 15420/20000, Loss: 0.0000080073150457\n",
      "Epoch: 15430/20000, Loss: 0.0000034406557461\n",
      "Epoch: 15440/20000, Loss: 0.0000020201923689\n",
      "Epoch: 15450/20000, Loss: 0.0000013108281109\n",
      "Epoch: 15460/20000, Loss: 0.0000010101495036\n",
      "Epoch: 15470/20000, Loss: 0.0000010479647017\n",
      "Epoch: 15480/20000, Loss: 0.0000014671529698\n",
      "Epoch: 15490/20000, Loss: 0.0000101195810203\n",
      "Epoch: 15500/20000, Loss: 0.0001403855130775\n",
      "Epoch: 15510/20000, Loss: 0.0002061851846520\n",
      "Epoch: 15520/20000, Loss: 0.0001389663666487\n",
      "Epoch: 15530/20000, Loss: 0.0000372453723685\n",
      "Epoch: 15540/20000, Loss: 0.0000124885755213\n",
      "Epoch: 15550/20000, Loss: 0.0000043594545787\n",
      "Epoch: 15560/20000, Loss: 0.0000019636190700\n",
      "Epoch: 15570/20000, Loss: 0.0000017620463950\n",
      "Epoch: 15580/20000, Loss: 0.0000038162515921\n",
      "Epoch: 15590/20000, Loss: 0.0000029359894143\n",
      "Epoch: 15600/20000, Loss: 0.0000070944738582\n",
      "Epoch: 15610/20000, Loss: 0.0001867515384220\n",
      "Epoch: 15620/20000, Loss: 0.0001188476380776\n",
      "Epoch: 15630/20000, Loss: 0.0000251834990195\n",
      "Epoch: 15640/20000, Loss: 0.0000543656933587\n",
      "Epoch: 15650/20000, Loss: 0.0000204791213037\n",
      "Epoch: 15660/20000, Loss: 0.0000049289596973\n",
      "Epoch: 15670/20000, Loss: 0.0000021691878374\n",
      "Epoch: 15680/20000, Loss: 0.0000013436239215\n",
      "Epoch: 15690/20000, Loss: 0.0000011928103731\n",
      "Epoch: 15700/20000, Loss: 0.0000016587000573\n",
      "Epoch: 15710/20000, Loss: 0.0000059067087932\n",
      "Epoch: 15720/20000, Loss: 0.0000078041884990\n",
      "Epoch: 15730/20000, Loss: 0.0000064459986788\n",
      "Epoch: 15740/20000, Loss: 0.0000219195953832\n",
      "Epoch: 15750/20000, Loss: 0.0004398931341711\n",
      "Epoch: 15760/20000, Loss: 0.0000645163527224\n",
      "Epoch: 15770/20000, Loss: 0.0000533764541615\n",
      "Epoch: 15780/20000, Loss: 0.0000232635647990\n",
      "Epoch: 15790/20000, Loss: 0.0000101434243334\n",
      "Epoch: 15800/20000, Loss: 0.0000031710260373\n",
      "Epoch: 15810/20000, Loss: 0.0000013411250848\n",
      "Epoch: 15820/20000, Loss: 0.0000016929873254\n",
      "Epoch: 15830/20000, Loss: 0.0000010369399206\n",
      "Epoch: 15840/20000, Loss: 0.0000015155904975\n",
      "Epoch: 15850/20000, Loss: 0.0000042341152948\n",
      "Epoch: 15860/20000, Loss: 0.0000778606845415\n",
      "Epoch: 15870/20000, Loss: 0.0005939902039245\n",
      "Epoch: 15880/20000, Loss: 0.0014972527278587\n",
      "Epoch: 15890/20000, Loss: 0.0028229283634573\n",
      "Epoch: 15900/20000, Loss: 0.0007297805859707\n",
      "Epoch: 15910/20000, Loss: 0.0002266030642204\n",
      "Epoch: 15920/20000, Loss: 0.0001048531776178\n",
      "Epoch: 15930/20000, Loss: 0.0000355504889740\n",
      "Epoch: 15940/20000, Loss: 0.0000139732283060\n",
      "Epoch: 15950/20000, Loss: 0.0000068042768362\n",
      "Epoch: 15960/20000, Loss: 0.0000039448123061\n",
      "Epoch: 15970/20000, Loss: 0.0000029307286695\n",
      "Epoch: 15980/20000, Loss: 0.0000024124603897\n",
      "Epoch: 15990/20000, Loss: 0.0000021814025786\n",
      "Epoch: 16000/20000, Loss: 0.0000020208829028\n",
      "Epoch: 16010/20000, Loss: 0.0000018841134306\n",
      "Epoch: 16020/20000, Loss: 0.0000017920189066\n",
      "Epoch: 16030/20000, Loss: 0.0000017097015643\n",
      "Epoch: 16040/20000, Loss: 0.0000016465739918\n",
      "Epoch: 16050/20000, Loss: 0.0000015867124148\n",
      "Epoch: 16060/20000, Loss: 0.0000015472062387\n",
      "Epoch: 16070/20000, Loss: 0.0000015463509726\n",
      "Epoch: 16080/20000, Loss: 0.0000014740404595\n",
      "Epoch: 16090/20000, Loss: 0.0000014781015807\n",
      "Epoch: 16100/20000, Loss: 0.0000013946296349\n",
      "Epoch: 16110/20000, Loss: 0.0000013694643712\n",
      "Epoch: 16120/20000, Loss: 0.0000013298040358\n",
      "Epoch: 16130/20000, Loss: 0.0000013001092611\n",
      "Epoch: 16140/20000, Loss: 0.0000012720328186\n",
      "Epoch: 16150/20000, Loss: 0.0000012626347825\n",
      "Epoch: 16160/20000, Loss: 0.0000012342028413\n",
      "Epoch: 16170/20000, Loss: 0.0000012020857412\n",
      "Epoch: 16180/20000, Loss: 0.0000012011294075\n",
      "Epoch: 16190/20000, Loss: 0.0000012501226365\n",
      "Epoch: 16200/20000, Loss: 0.0000012567190879\n",
      "Epoch: 16210/20000, Loss: 0.0000011434241287\n",
      "Epoch: 16220/20000, Loss: 0.0000012372871652\n",
      "Epoch: 16230/20000, Loss: 0.0000011272171605\n",
      "Epoch: 16240/20000, Loss: 0.0000011164846683\n",
      "Epoch: 16250/20000, Loss: 0.0000010760662690\n",
      "Epoch: 16260/20000, Loss: 0.0000010530973213\n",
      "Epoch: 16270/20000, Loss: 0.0000010748555042\n",
      "Epoch: 16280/20000, Loss: 0.0000020143243091\n",
      "Epoch: 16290/20000, Loss: 0.0000010837854916\n",
      "Epoch: 16300/20000, Loss: 0.0000020654670152\n",
      "Epoch: 16310/20000, Loss: 0.0000015548488363\n",
      "Epoch: 16320/20000, Loss: 0.0000012123579154\n",
      "Epoch: 16330/20000, Loss: 0.0000030301903280\n",
      "Epoch: 16340/20000, Loss: 0.0000016024175693\n",
      "Epoch: 16350/20000, Loss: 0.0000017497054614\n",
      "Epoch: 16360/20000, Loss: 0.0000035221419239\n",
      "Epoch: 16370/20000, Loss: 0.0000066895181590\n",
      "Epoch: 16380/20000, Loss: 0.0000103553720692\n",
      "Epoch: 16390/20000, Loss: 0.0000379976736440\n",
      "Epoch: 16400/20000, Loss: 0.0001337874564342\n",
      "Epoch: 16410/20000, Loss: 0.0000164775028679\n",
      "Epoch: 16420/20000, Loss: 0.0000197252320504\n",
      "Epoch: 16430/20000, Loss: 0.0000076707974586\n",
      "Epoch: 16440/20000, Loss: 0.0000015582363631\n",
      "Epoch: 16450/20000, Loss: 0.0000023044083264\n",
      "Epoch: 16460/20000, Loss: 0.0000182465500984\n",
      "Epoch: 16470/20000, Loss: 0.0004199731338304\n",
      "Epoch: 16480/20000, Loss: 0.0000844864698593\n",
      "Epoch: 16490/20000, Loss: 0.0000868392235134\n",
      "Epoch: 16500/20000, Loss: 0.0000313156560878\n",
      "Epoch: 16510/20000, Loss: 0.0000094842998806\n",
      "Epoch: 16520/20000, Loss: 0.0000036100395846\n",
      "Epoch: 16530/20000, Loss: 0.0000023894212973\n",
      "Epoch: 16540/20000, Loss: 0.0000019713572783\n",
      "Epoch: 16550/20000, Loss: 0.0000057319616644\n",
      "Epoch: 16560/20000, Loss: 0.0000026745392461\n",
      "Epoch: 16570/20000, Loss: 0.0000023095028610\n",
      "Epoch: 16580/20000, Loss: 0.0000028110553103\n",
      "Epoch: 16590/20000, Loss: 0.0000250592565862\n",
      "Epoch: 16600/20000, Loss: 0.0007011538255028\n",
      "Epoch: 16610/20000, Loss: 0.0003052668762393\n",
      "Epoch: 16620/20000, Loss: 0.0000516427135153\n",
      "Epoch: 16630/20000, Loss: 0.0000080999152487\n",
      "Epoch: 16640/20000, Loss: 0.0000145588355736\n",
      "Epoch: 16650/20000, Loss: 0.0000057572715377\n",
      "Epoch: 16660/20000, Loss: 0.0000022389972401\n",
      "Epoch: 16670/20000, Loss: 0.0000015216457996\n",
      "Epoch: 16680/20000, Loss: 0.0000014614918200\n",
      "Epoch: 16690/20000, Loss: 0.0000038620028135\n",
      "Epoch: 16700/20000, Loss: 0.0000068835929596\n",
      "Epoch: 16710/20000, Loss: 0.0000029357368021\n",
      "Epoch: 16720/20000, Loss: 0.0000058426990108\n",
      "Epoch: 16730/20000, Loss: 0.0000103140819192\n",
      "Epoch: 16740/20000, Loss: 0.0002087066386594\n",
      "Epoch: 16750/20000, Loss: 0.0001029730046866\n",
      "Epoch: 16760/20000, Loss: 0.0000391972062062\n",
      "Epoch: 16770/20000, Loss: 0.0000299226067000\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 16780/20000, Loss: 0.0000200131489692\n",
      "Epoch: 16790/20000, Loss: 0.0000082841497715\n",
      "Epoch: 16800/20000, Loss: 0.0000037280815377\n",
      "Epoch: 16810/20000, Loss: 0.0000022210581392\n",
      "Epoch: 16820/20000, Loss: 0.0000013696052292\n",
      "Epoch: 16830/20000, Loss: 0.0000015230812096\n",
      "Epoch: 16840/20000, Loss: 0.0000032154557630\n",
      "Epoch: 16850/20000, Loss: 0.0000012823431916\n",
      "Epoch: 16860/20000, Loss: 0.0000050267526603\n",
      "Epoch: 16870/20000, Loss: 0.0000076954120232\n",
      "Epoch: 16880/20000, Loss: 0.0001825406652642\n",
      "Epoch: 16890/20000, Loss: 0.0000921988394111\n",
      "Epoch: 16900/20000, Loss: 0.0001537794159958\n",
      "Epoch: 16910/20000, Loss: 0.0000275138700090\n",
      "Epoch: 16920/20000, Loss: 0.0000198980815185\n",
      "Epoch: 16930/20000, Loss: 0.0000080370800788\n",
      "Epoch: 16940/20000, Loss: 0.0000015297537175\n",
      "Epoch: 16950/20000, Loss: 0.0000018253889493\n",
      "Epoch: 16960/20000, Loss: 0.0000013878465097\n",
      "Epoch: 16970/20000, Loss: 0.0000010650099966\n",
      "Epoch: 16980/20000, Loss: 0.0000010998940070\n",
      "Epoch: 16990/20000, Loss: 0.0000083667882791\n",
      "Epoch: 17000/20000, Loss: 0.0000022513409021\n",
      "Epoch: 17010/20000, Loss: 0.0000022325327791\n",
      "Epoch: 17020/20000, Loss: 0.0000043907843974\n",
      "Epoch: 17030/20000, Loss: 0.0000147454848047\n",
      "Epoch: 17040/20000, Loss: 0.0002029446914094\n",
      "Epoch: 17050/20000, Loss: 0.0001148101291619\n",
      "Epoch: 17060/20000, Loss: 0.0000906849818421\n",
      "Epoch: 17070/20000, Loss: 0.0000163303939189\n",
      "Epoch: 17080/20000, Loss: 0.0000107269252112\n",
      "Epoch: 17090/20000, Loss: 0.0000038204052544\n",
      "Epoch: 17100/20000, Loss: 0.0000023689406135\n",
      "Epoch: 17110/20000, Loss: 0.0000016431745280\n",
      "Epoch: 17120/20000, Loss: 0.0000034922147734\n",
      "Epoch: 17130/20000, Loss: 0.0000613836382399\n",
      "Epoch: 17140/20000, Loss: 0.0001814435090637\n",
      "Epoch: 17150/20000, Loss: 0.0000504682975588\n",
      "Epoch: 17160/20000, Loss: 0.0000029341438221\n",
      "Epoch: 17170/20000, Loss: 0.0000156365495059\n",
      "Epoch: 17180/20000, Loss: 0.0000022373203592\n",
      "Epoch: 17190/20000, Loss: 0.0000012665864233\n",
      "Epoch: 17200/20000, Loss: 0.0000070108835644\n",
      "Epoch: 17210/20000, Loss: 0.0002041551633738\n",
      "Epoch: 17220/20000, Loss: 0.0000735178036848\n",
      "Epoch: 17230/20000, Loss: 0.0000194070489670\n",
      "Epoch: 17240/20000, Loss: 0.0000431965672760\n",
      "Epoch: 17250/20000, Loss: 0.0000208242945519\n",
      "Epoch: 17260/20000, Loss: 0.0000069702082328\n",
      "Epoch: 17270/20000, Loss: 0.0000033154892662\n",
      "Epoch: 17280/20000, Loss: 0.0000024713983748\n",
      "Epoch: 17290/20000, Loss: 0.0000023842283099\n",
      "Epoch: 17300/20000, Loss: 0.0000026358125069\n",
      "Epoch: 17310/20000, Loss: 0.0000011321997135\n",
      "Epoch: 17320/20000, Loss: 0.0000032784171253\n",
      "Epoch: 17330/20000, Loss: 0.0000312040137942\n",
      "Epoch: 17340/20000, Loss: 0.0004871341225225\n",
      "Epoch: 17350/20000, Loss: 0.0001167884111055\n",
      "Epoch: 17360/20000, Loss: 0.0000607155307080\n",
      "Epoch: 17370/20000, Loss: 0.0000298874929285\n",
      "Epoch: 17380/20000, Loss: 0.0000109029406303\n",
      "Epoch: 17390/20000, Loss: 0.0000034258505366\n",
      "Epoch: 17400/20000, Loss: 0.0000012989694369\n",
      "Epoch: 17410/20000, Loss: 0.0000018758039459\n",
      "Epoch: 17420/20000, Loss: 0.0000018664657091\n",
      "Epoch: 17430/20000, Loss: 0.0000053797070905\n",
      "Epoch: 17440/20000, Loss: 0.0000827123149065\n",
      "Epoch: 17450/20000, Loss: 0.0003938206937164\n",
      "Epoch: 17460/20000, Loss: 0.0001406497030985\n",
      "Epoch: 17470/20000, Loss: 0.0000546569499420\n",
      "Epoch: 17480/20000, Loss: 0.0000195176253328\n",
      "Epoch: 17490/20000, Loss: 0.0000041078587856\n",
      "Epoch: 17500/20000, Loss: 0.0000019884505491\n",
      "Epoch: 17510/20000, Loss: 0.0000021595512862\n",
      "Epoch: 17520/20000, Loss: 0.0000033536837236\n",
      "Epoch: 17530/20000, Loss: 0.0000168606075022\n",
      "Epoch: 17540/20000, Loss: 0.0002105854946421\n",
      "Epoch: 17550/20000, Loss: 0.0000580919513595\n",
      "Epoch: 17560/20000, Loss: 0.0000554247162654\n",
      "Epoch: 17570/20000, Loss: 0.0000356325981556\n",
      "Epoch: 17580/20000, Loss: 0.0000136887911140\n",
      "Epoch: 17590/20000, Loss: 0.0000020571687855\n",
      "Epoch: 17600/20000, Loss: 0.0000032352284052\n",
      "Epoch: 17610/20000, Loss: 0.0000024452788239\n",
      "Epoch: 17620/20000, Loss: 0.0000052756486184\n",
      "Epoch: 17630/20000, Loss: 0.0000739522583899\n",
      "Epoch: 17640/20000, Loss: 0.0004902141517960\n",
      "Epoch: 17650/20000, Loss: 0.0001571450411575\n",
      "Epoch: 17660/20000, Loss: 0.0000690130036674\n",
      "Epoch: 17670/20000, Loss: 0.0000221845257329\n",
      "Epoch: 17680/20000, Loss: 0.0000099853732536\n",
      "Epoch: 17690/20000, Loss: 0.0000034900872379\n",
      "Epoch: 17700/20000, Loss: 0.0000018242679971\n",
      "Epoch: 17710/20000, Loss: 0.0000064386413214\n",
      "Epoch: 17720/20000, Loss: 0.0000027028388558\n",
      "Epoch: 17730/20000, Loss: 0.0000061195237322\n",
      "Epoch: 17740/20000, Loss: 0.0001066075856215\n",
      "Epoch: 17750/20000, Loss: 0.0003578218165785\n",
      "Epoch: 17760/20000, Loss: 0.0001236826501554\n",
      "Epoch: 17770/20000, Loss: 0.0000730921528884\n",
      "Epoch: 17780/20000, Loss: 0.0000253059497481\n",
      "Epoch: 17790/20000, Loss: 0.0000075682414717\n",
      "Epoch: 17800/20000, Loss: 0.0000024059802399\n",
      "Epoch: 17810/20000, Loss: 0.0000024002999908\n",
      "Epoch: 17820/20000, Loss: 0.0000019288534077\n",
      "Epoch: 17830/20000, Loss: 0.0000037208658341\n",
      "Epoch: 17840/20000, Loss: 0.0000404932688980\n",
      "Epoch: 17850/20000, Loss: 0.0003294781781733\n",
      "Epoch: 17860/20000, Loss: 0.0000250769480772\n",
      "Epoch: 17870/20000, Loss: 0.0000092556792879\n",
      "Epoch: 17880/20000, Loss: 0.0000259943171841\n",
      "Epoch: 17890/20000, Loss: 0.0000044224598241\n",
      "Epoch: 17900/20000, Loss: 0.0000051667843763\n",
      "Epoch: 17910/20000, Loss: 0.0000040506452024\n",
      "Epoch: 17920/20000, Loss: 0.0000157163267431\n",
      "Epoch: 17930/20000, Loss: 0.0001964098628378\n",
      "Epoch: 17940/20000, Loss: 0.0001135100683314\n",
      "Epoch: 17950/20000, Loss: 0.0000858426064951\n",
      "Epoch: 17960/20000, Loss: 0.0000300420288113\n",
      "Epoch: 17970/20000, Loss: 0.0000092979835244\n",
      "Epoch: 17980/20000, Loss: 0.0000028671113341\n",
      "Epoch: 17990/20000, Loss: 0.0000035518478398\n",
      "Epoch: 18000/20000, Loss: 0.0000036311973872\n",
      "Epoch: 18010/20000, Loss: 0.0000158109851327\n",
      "Epoch: 18020/20000, Loss: 0.0001745418267092\n",
      "Epoch: 18030/20000, Loss: 0.0001075414111256\n",
      "Epoch: 18040/20000, Loss: 0.0000579751795158\n",
      "Epoch: 18050/20000, Loss: 0.0000191532089957\n",
      "Epoch: 18060/20000, Loss: 0.0000060702782321\n",
      "Epoch: 18070/20000, Loss: 0.0000047829967116\n",
      "Epoch: 18080/20000, Loss: 0.0000026104894459\n",
      "Epoch: 18090/20000, Loss: 0.0000043098448259\n",
      "Epoch: 18100/20000, Loss: 0.0000573339639232\n",
      "Epoch: 18110/20000, Loss: 0.0005088310572319\n",
      "Epoch: 18120/20000, Loss: 0.0094761978834867\n",
      "Epoch: 18130/20000, Loss: 0.0029799886979163\n",
      "Epoch: 18140/20000, Loss: 0.0009148273966275\n",
      "Epoch: 18150/20000, Loss: 0.0003100970352534\n",
      "Epoch: 18160/20000, Loss: 0.0001162479820778\n",
      "Epoch: 18170/20000, Loss: 0.0000507095573994\n",
      "Epoch: 18180/20000, Loss: 0.0000230162859225\n",
      "Epoch: 18190/20000, Loss: 0.0000107345940705\n",
      "Epoch: 18200/20000, Loss: 0.0000068537474363\n",
      "Epoch: 18210/20000, Loss: 0.0000051091378737\n",
      "Epoch: 18220/20000, Loss: 0.0000041866405809\n",
      "Epoch: 18230/20000, Loss: 0.0000036802150589\n",
      "Epoch: 18240/20000, Loss: 0.0000033269241158\n",
      "Epoch: 18250/20000, Loss: 0.0000035115881474\n",
      "Epoch: 18260/20000, Loss: 0.0000030822895951\n",
      "Epoch: 18270/20000, Loss: 0.0000027837791094\n",
      "Epoch: 18280/20000, Loss: 0.0000029181132959\n",
      "Epoch: 18290/20000, Loss: 0.0000025070833090\n",
      "Epoch: 18300/20000, Loss: 0.0000023237537334\n",
      "Epoch: 18310/20000, Loss: 0.0000023957586563\n",
      "Epoch: 18320/20000, Loss: 0.0000021890505195\n",
      "Epoch: 18330/20000, Loss: 0.0000020510274226\n",
      "Epoch: 18340/20000, Loss: 0.0000380136480089\n",
      "Epoch: 18350/20000, Loss: 0.0000225180974667\n",
      "Epoch: 18360/20000, Loss: 0.0000097896327134\n",
      "Epoch: 18370/20000, Loss: 0.0000049457112254\n",
      "Epoch: 18380/20000, Loss: 0.0000029867012472\n",
      "Epoch: 18390/20000, Loss: 0.0000025096485388\n",
      "Epoch: 18400/20000, Loss: 0.0000022548599645\n",
      "Epoch: 18410/20000, Loss: 0.0000020716827294\n",
      "Epoch: 18420/20000, Loss: 0.0000019484227778\n",
      "Epoch: 18430/20000, Loss: 0.0000018514839439\n",
      "Epoch: 18440/20000, Loss: 0.0000017766409428\n",
      "Epoch: 18450/20000, Loss: 0.0000016999866830\n",
      "Epoch: 18460/20000, Loss: 0.0000016438344801\n",
      "Epoch: 18470/20000, Loss: 0.0000015873172288\n",
      "Epoch: 18480/20000, Loss: 0.0000015300578298\n",
      "Epoch: 18490/20000, Loss: 0.0000015100087012\n",
      "Epoch: 18500/20000, Loss: 0.0000041200692067\n",
      "Epoch: 18510/20000, Loss: 0.0000037808151774\n",
      "Epoch: 18520/20000, Loss: 0.0000013571918771\n",
      "Epoch: 18530/20000, Loss: 0.0000015431518250\n",
      "Epoch: 18540/20000, Loss: 0.0000013982347582\n",
      "Epoch: 18550/20000, Loss: 0.0000012251035741\n",
      "Epoch: 18560/20000, Loss: 0.0000012023552927\n",
      "Epoch: 18570/20000, Loss: 0.0000011570066363\n",
      "Epoch: 18580/20000, Loss: 0.0000011315353277\n",
      "Epoch: 18590/20000, Loss: 0.0000011088378642\n",
      "Epoch: 18600/20000, Loss: 0.0000010972540849\n",
      "Epoch: 18610/20000, Loss: 0.0000010560098644\n",
      "Epoch: 18620/20000, Loss: 0.0000010185284509\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 18630/20000, Loss: 0.0000010347628177\n",
      "Epoch: 18640/20000, Loss: 0.0000009734493460\n",
      "Epoch: 18650/20000, Loss: 0.0000009597266626\n",
      "Epoch: 18660/20000, Loss: 0.0000009284631801\n",
      "Epoch: 18670/20000, Loss: 0.0000009067433098\n",
      "Epoch: 18680/20000, Loss: 0.0000009312389011\n",
      "Epoch: 18690/20000, Loss: 0.0000009114778550\n",
      "Epoch: 18700/20000, Loss: 0.0000009888609611\n",
      "Epoch: 18710/20000, Loss: 0.0000009081329040\n",
      "Epoch: 18720/20000, Loss: 0.0000039059482333\n",
      "Epoch: 18730/20000, Loss: 0.0000030275634799\n",
      "Epoch: 18740/20000, Loss: 0.0000008568932799\n",
      "Epoch: 18750/20000, Loss: 0.0000011272476286\n",
      "Epoch: 18760/20000, Loss: 0.0000008134662721\n",
      "Epoch: 18770/20000, Loss: 0.0000008842547459\n",
      "Epoch: 18780/20000, Loss: 0.0000008018011499\n",
      "Epoch: 18790/20000, Loss: 0.0000007760128256\n",
      "Epoch: 18800/20000, Loss: 0.0000008323623888\n",
      "Epoch: 18810/20000, Loss: 0.0000007452120485\n",
      "Epoch: 18820/20000, Loss: 0.0000007286125197\n",
      "Epoch: 18830/20000, Loss: 0.0000007087043628\n",
      "Epoch: 18840/20000, Loss: 0.0000011515126062\n",
      "Epoch: 18850/20000, Loss: 0.0000034893421343\n",
      "Epoch: 18860/20000, Loss: 0.0000020619195311\n",
      "Epoch: 18870/20000, Loss: 0.0000007216881386\n",
      "Epoch: 18880/20000, Loss: 0.0000007173729273\n",
      "Epoch: 18890/20000, Loss: 0.0000007189287885\n",
      "Epoch: 18900/20000, Loss: 0.0000006506204500\n",
      "Epoch: 18910/20000, Loss: 0.0000008018777180\n",
      "Epoch: 18920/20000, Loss: 0.0000070879500527\n",
      "Epoch: 18930/20000, Loss: 0.0000144026471389\n",
      "Epoch: 18940/20000, Loss: 0.0000283320059680\n",
      "Epoch: 18950/20000, Loss: 0.0000865021429490\n",
      "Epoch: 18960/20000, Loss: 0.0000036743151668\n",
      "Epoch: 18970/20000, Loss: 0.0000099285125543\n",
      "Epoch: 18980/20000, Loss: 0.0000061114224081\n",
      "Epoch: 18990/20000, Loss: 0.0000022599242584\n",
      "Epoch: 19000/20000, Loss: 0.0000006873780194\n",
      "Epoch: 19010/20000, Loss: 0.0000014239320762\n",
      "Epoch: 19020/20000, Loss: 0.0000131351680466\n",
      "Epoch: 19030/20000, Loss: 0.0003433273814153\n",
      "Epoch: 19040/20000, Loss: 0.0000845841786941\n",
      "Epoch: 19050/20000, Loss: 0.0000625947504886\n",
      "Epoch: 19060/20000, Loss: 0.0000122244264276\n",
      "Epoch: 19070/20000, Loss: 0.0000018718127421\n",
      "Epoch: 19080/20000, Loss: 0.0000015096790094\n",
      "Epoch: 19090/20000, Loss: 0.0000011806049542\n",
      "Epoch: 19100/20000, Loss: 0.0000016756839614\n",
      "Epoch: 19110/20000, Loss: 0.0000011436836758\n",
      "Epoch: 19120/20000, Loss: 0.0000024042956284\n",
      "Epoch: 19130/20000, Loss: 0.0000010783217022\n",
      "Epoch: 19140/20000, Loss: 0.0000011940929880\n",
      "Epoch: 19150/20000, Loss: 0.0000042358174142\n",
      "Epoch: 19160/20000, Loss: 0.0000091905176305\n",
      "Epoch: 19170/20000, Loss: 0.0001477591868024\n",
      "Epoch: 19180/20000, Loss: 0.0001647049357416\n",
      "Epoch: 19190/20000, Loss: 0.0001068183482857\n",
      "Epoch: 19200/20000, Loss: 0.0000273525602097\n",
      "Epoch: 19210/20000, Loss: 0.0000154627887241\n",
      "Epoch: 19220/20000, Loss: 0.0000073917876762\n",
      "Epoch: 19230/20000, Loss: 0.0000013013847138\n",
      "Epoch: 19240/20000, Loss: 0.0000015007256025\n",
      "Epoch: 19250/20000, Loss: 0.0000012316703533\n",
      "Epoch: 19260/20000, Loss: 0.0000009666496226\n",
      "Epoch: 19270/20000, Loss: 0.0000008302733931\n",
      "Epoch: 19280/20000, Loss: 0.0000007688729511\n",
      "Epoch: 19290/20000, Loss: 0.0000007566961813\n",
      "Epoch: 19300/20000, Loss: 0.0000007254595289\n",
      "Epoch: 19310/20000, Loss: 0.0000007612957234\n",
      "Epoch: 19320/20000, Loss: 0.0000035829234548\n",
      "Epoch: 19330/20000, Loss: 0.0000091109068308\n",
      "Epoch: 19340/20000, Loss: 0.0001756648707669\n",
      "Epoch: 19350/20000, Loss: 0.0001011600979837\n",
      "Epoch: 19360/20000, Loss: 0.0002177860442316\n",
      "Epoch: 19370/20000, Loss: 0.0000099631206467\n",
      "Epoch: 19380/20000, Loss: 0.0000304570094158\n",
      "Epoch: 19390/20000, Loss: 0.0000042795604713\n",
      "Epoch: 19400/20000, Loss: 0.0000036092048958\n",
      "Epoch: 19410/20000, Loss: 0.0000027204596336\n",
      "Epoch: 19420/20000, Loss: 0.0000016095432329\n",
      "Epoch: 19430/20000, Loss: 0.0000041852913455\n",
      "Epoch: 19440/20000, Loss: 0.0000032556117731\n",
      "Epoch: 19450/20000, Loss: 0.0000052401828725\n",
      "Epoch: 19460/20000, Loss: 0.0000030131463973\n",
      "Epoch: 19470/20000, Loss: 0.0000015511233187\n",
      "Epoch: 19480/20000, Loss: 0.0000021383418698\n",
      "Epoch: 19490/20000, Loss: 0.0000017928238094\n",
      "Epoch: 19500/20000, Loss: 0.0000026758625609\n",
      "Epoch: 19510/20000, Loss: 0.0000228651351790\n",
      "Epoch: 19520/20000, Loss: 0.0009665868710726\n",
      "Epoch: 19530/20000, Loss: 0.0002825628616847\n",
      "Epoch: 19540/20000, Loss: 0.0000658949138597\n",
      "Epoch: 19550/20000, Loss: 0.0000124688031065\n",
      "Epoch: 19560/20000, Loss: 0.0000150385258166\n",
      "Epoch: 19570/20000, Loss: 0.0000036380208712\n",
      "Epoch: 19580/20000, Loss: 0.0000021880684926\n",
      "Epoch: 19590/20000, Loss: 0.0000020633760869\n",
      "Epoch: 19600/20000, Loss: 0.0000014624660025\n",
      "Epoch: 19610/20000, Loss: 0.0000012107060456\n",
      "Epoch: 19620/20000, Loss: 0.0000010904043393\n",
      "Epoch: 19630/20000, Loss: 0.0000010245893236\n",
      "Epoch: 19640/20000, Loss: 0.0000032948439639\n",
      "Epoch: 19650/20000, Loss: 0.0000038422172111\n",
      "Epoch: 19660/20000, Loss: 0.0000057447746258\n",
      "Epoch: 19670/20000, Loss: 0.0000075775706136\n",
      "Epoch: 19680/20000, Loss: 0.0000349118199665\n",
      "Epoch: 19690/20000, Loss: 0.0008934204815887\n",
      "Epoch: 19700/20000, Loss: 0.0002730269625317\n",
      "Epoch: 19710/20000, Loss: 0.0000087947764769\n",
      "Epoch: 19720/20000, Loss: 0.0000406447325076\n",
      "Epoch: 19730/20000, Loss: 0.0000035232189930\n",
      "Epoch: 19740/20000, Loss: 0.0000030617584343\n",
      "Epoch: 19750/20000, Loss: 0.0000029615432595\n",
      "Epoch: 19760/20000, Loss: 0.0000019417677777\n",
      "Epoch: 19770/20000, Loss: 0.0000015957841697\n",
      "Epoch: 19780/20000, Loss: 0.0000040586714931\n",
      "Epoch: 19790/20000, Loss: 0.0000019799424535\n",
      "Epoch: 19800/20000, Loss: 0.0000013745747083\n",
      "Epoch: 19810/20000, Loss: 0.0000053992384892\n",
      "Epoch: 19820/20000, Loss: 0.0000044182302190\n",
      "Epoch: 19830/20000, Loss: 0.0000190863338503\n",
      "Epoch: 19840/20000, Loss: 0.0007190968026407\n",
      "Epoch: 19850/20000, Loss: 0.0003515757853165\n",
      "Epoch: 19860/20000, Loss: 0.0001315494300798\n",
      "Epoch: 19870/20000, Loss: 0.0000301010531985\n",
      "Epoch: 19880/20000, Loss: 0.0000046780646699\n",
      "Epoch: 19890/20000, Loss: 0.0000051249494391\n",
      "Epoch: 19900/20000, Loss: 0.0000031489423691\n",
      "Epoch: 19910/20000, Loss: 0.0000049842260523\n",
      "Epoch: 19920/20000, Loss: 0.0000017367314058\n",
      "Epoch: 19930/20000, Loss: 0.0000024348883017\n",
      "Epoch: 19940/20000, Loss: 0.0000076679889389\n",
      "Epoch: 19950/20000, Loss: 0.0000021865298550\n",
      "Epoch: 19960/20000, Loss: 0.0000053455773923\n",
      "Epoch: 19970/20000, Loss: 0.0000075063071563\n",
      "Epoch: 19980/20000, Loss: 0.0000220965266635\n",
      "Epoch: 19990/20000, Loss: 0.0011800276115537\n",
      "Epoch: 20000/20000, Loss: 0.0002486370212864\n"
     ]
    }
   ],
   "source": [
    "# Create RNN instance\n",
    "rnn = RNN(input_size, hidden_size, output_size)\n",
    "\n",
    "# Loss and optimizer\n",
    "criterion = nn.MSELoss()\n",
    "optimizer = torch.optim.Adam(rnn.parameters(), lr=0.01)\n",
    "\n",
    "\n",
    "\n",
    "# Training loop\n",
    "for epoch in range(num_epochs):\n",
    "    def closure():\n",
    "        optimizer.zero_grad()\n",
    "        hidden = torch.zeros(1, batch_size, hidden_size)\n",
    "\n",
    "        # Forward pass\n",
    "        output, hidden = rnn(input_tensor, hidden)\n",
    "        loss = criterion(output, target_tensor)\n",
    "\n",
    "        loss.backward()\n",
    "        return loss\n",
    "\n",
    "    optimizer.step(closure)\n",
    "\n",
    "    # Print progress\n",
    "    if (epoch + 1) % 10 == 0:\n",
    "        print(f'Epoch: {epoch + 1}/{num_epochs}, Loss: {closure().item():.16f}')\n",
    "\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "5dca0364",
   "metadata": {},
   "outputs": [],
   "source": [
    "# # Create RNN instance\n",
    "# rnn = RNN(input_size, hidden_size, output_size)\n",
    "\n",
    "# # Loss and optimizer\n",
    "# criterion = nn.MSELoss()\n",
    "# optimizer = torch.optim.Adam(rnn.parameters(), lr=0.01)\n",
    "\n",
    "# # Training loop\n",
    "# for epoch in range(num_epochs):\n",
    "#     # Set initial hidden state\n",
    "#     hidden = torch.zeros(1, batch_size, hidden_size)\n",
    "\n",
    "#     # Forward pass\n",
    "#     output, hidden = rnn(input_tensor, hidden)\n",
    "#     loss = criterion(output, target_tensor)\n",
    "\n",
    "#     # Backward and optimize\n",
    "#     optimizer.zero_grad()\n",
    "#     loss.backward()\n",
    "#     optimizer.step()\n",
    "\n",
    "#     # Print progress\n",
    "#     if (epoch+1) % 10 == 0:\n",
    "#         print(f'Epoch: {epoch+1}/{num_epochs}, Loss: {loss.item():.4f}')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "e00bb586",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([1, 1, 201])\n",
      "torch.Size([1, 20, 201])\n"
     ]
    }
   ],
   "source": [
    "print(test_tensor.shape)\n",
    "prediction_tensor = torch.zeros(1, 20, 201).float()\n",
    "print(prediction_tensor.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "c8f729d8",
   "metadata": {},
   "outputs": [],
   "source": [
    "with torch.no_grad():\n",
    "    hidden_pred = torch.zeros(1, batch_size, hidden_size)\n",
    "    prediction, _ = rnn(test_tensor, hidden_pred)\n",
    "    prediction = prediction.view(1, 1, 201).float()\n",
    "    prediction_tensor[:, 0, :] = prediction\n",
    "    for i in range(19):\n",
    "        hidden_pred = torch.zeros(1, batch_size, hidden_size)\n",
    "        prediction, _ = rnn(prediction, hidden_pred)\n",
    "        prediction = prediction.view(1, 1, 201).float()\n",
    "        prediction_tensor[:, i+1, :] = prediction"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "17bb3429",
   "metadata": {},
   "outputs": [],
   "source": [
    "# exact\n",
    "u_test = u\n",
    "u_test_full = u_test[80:100, :]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "7c7ed464",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([20, 201])"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\n",
    "k1 = (prediction_tensor - u_test_full)**2\n",
    "u_test_full_tensor = torch.tensor(u_test_full**2)\n",
    "u_test_full_tensor.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "1c031caa",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Relative Error Test:  0.005832545777443103 %\n"
     ]
    }
   ],
   "source": [
    "# Compute the relative L2 error norm (generalization error)\n",
    "relative_error_test = torch.mean(k1)/ torch.mean(u_test_full_tensor)\n",
    "\n",
    "print(\"Relative Error Test: \", relative_error_test.item(), \"%\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "20302934",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor(0.1457, dtype=torch.float64)"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "R_abs = torch.max(prediction-u_test_full)\n",
    "R_abs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "56b963a4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor(0.0406, dtype=torch.float64)"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "R_mean = torch.mean(torch.abs(prediction - u_test_full))\n",
    "R_mean"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "4766e488",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Explained Variance Score: 0.9951726801432064\n"
     ]
    }
   ],
   "source": [
    "import torch\n",
    "\n",
    "a = prediction\n",
    "b = u_test_full\n",
    "# Assuming 'a' is your predicted values (model's predictions) and 'b' is the true values (ground truth)\n",
    "# Make sure 'a' and 'b' are PyTorch tensors\n",
    "b = torch.tensor(b)\n",
    "# Calculate the mean of 'b'\n",
    "mean_b = torch.mean(b)\n",
    "\n",
    "# Calculate the Explained Variance Score\n",
    "numerator = torch.var(b - a)  # Variance of the differences between 'b' and 'a'\n",
    "denominator = torch.var(b)    # Variance of 'b'\n",
    "evs = 1 - numerator / denominator\n",
    "\n",
    "print(\"Explained Variance Score:\", evs.item())\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "4f92301f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([20, 201])"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "prediction_tensor = torch.squeeze(prediction_tensor)\n",
    "prediction_tensor.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "1219331f",
   "metadata": {},
   "outputs": [],
   "source": [
    "conc_u = torch.squeeze(input_tensor)\n",
    "prediction_tensor = torch.squeeze(prediction_tensor)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "2b700b16",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([100, 201])"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "concatenated_tensor = torch.cat((conc_u, prediction_tensor), dim=0)\n",
    "\n",
    "concatenated_tensor.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "374f1656",
   "metadata": {},
   "outputs": [],
   "source": [
    "t1 = np.linspace(0, 1 , 100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "34097302",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import torch\n",
    "\n",
    "# Create the figure and axis objects with reduced width\n",
    "fig, ax = plt.subplots(figsize=(5, 5))  # You can adjust the width (7 inches) and height (5 inches) as needed\n",
    "\n",
    "# # Make sure the font is Times Roman\n",
    "# plt.rcParams['font.family'] = 'Times New Roman'\n",
    "\n",
    "# # Perform the prediction\n",
    "# with torch.no_grad():\n",
    "#     prediction = lem(test_tensor)\n",
    "\n",
    "final_time_output = prediction_tensor[-2, :]\n",
    "final_out = final_time_output.detach().numpy().reshape(-1, 1)\n",
    "final_true = u[-2, :].reshape(-1, 1)\n",
    "\n",
    "# Plot the data with red and blue lines, one with dotted and one with solid style\n",
    "ax.plot(x.T, final_out, color='red', linestyle='dotted', linewidth=12, label='Prediction')\n",
    "ax.plot(x.T, final_true, color='blue', linestyle='solid', linewidth=7, label='True')\n",
    "\n",
    "# Set the axis labels with bold font weight\n",
    "ax.set_xlabel(r\"${x}$\", fontsize=26, color='black', fontdict={'weight': 'bold'})\n",
    "ax.set_ylabel(r\"${u(x, t)}$\", fontsize=26, color='black', fontdict={'weight': 'bold'})\n",
    "\n",
    "# Set the title with bold font weight\n",
    "ax.set_title(r\"${t = 0.99}$\", fontsize=26, color='black', fontweight='bold')\n",
    "\n",
    "# Set the number of ticks for x-axis and y-axis to 3\n",
    "ax.set_xticks([-1, 0, 1])\n",
    "ax.set_yticks([-1, 0, 1])\n",
    "\n",
    "# Set tick labels fontweight to bold and increase font size\n",
    "ax.tick_params(axis='both', which='major', labelsize=20, width=2, length=10)\n",
    "\n",
    "# # Set the fontweight for tick labels to bold\n",
    "# for tick in ax.get_xticklabels() + ax.get_yticklabels():\n",
    "#     tick.set_weight('bold')\n",
    "\n",
    "# Set the spines linewidth to bold\n",
    "ax.spines['top'].set_linewidth(2)\n",
    "ax.spines['right'].set_linewidth(2)\n",
    "ax.spines['bottom'].set_linewidth(2)\n",
    "ax.spines['left'].set_linewidth(2)\n",
    "\n",
    "\n",
    "# Increase font size for x and y axis numbers\n",
    "ax.tick_params(axis='both', which='major', labelsize=24)\n",
    "\n",
    "# Set the legend\n",
    "# ax.legend()\n",
    "\n",
    "plt.savefig('RNN_0.99_20.pdf', dpi=500, bbox_inches=\"tight\")\n",
    "\n",
    "# Show the plot\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "374b9bf2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import torch\n",
    "\n",
    "# Create the figure and axis objects with reduced width\n",
    "fig, ax = plt.subplots(figsize=(5, 5))  # You can adjust the width (7 inches) and height (5 inches) as needed\n",
    "\n",
    "# Make sure the font is Times Roman\n",
    "plt.rcParams['font.family'] = 'Times New Roman'\n",
    "\n",
    "\n",
    "\n",
    "final_time_output = prediction_tensor[-20, :]\n",
    "final_out = final_time_output.detach().numpy().reshape(-1, 1)\n",
    "final_true = u[-20, :].reshape(-1, 1)\n",
    "\n",
    "# Plot the data with red and blue lines, one with dotted and one with solid style\n",
    "ax.plot(x.T, final_out, color='red', linestyle='dotted', linewidth=12, label='Prediction')\n",
    "ax.plot(x.T, final_true, color='blue', linestyle='solid', linewidth=7, label='True')\n",
    "\n",
    "# Set the axis labels with bold font weight\n",
    "ax.set_xlabel(r\"${x}$\", fontsize=26, color='black', fontdict={'weight': 'bold'})\n",
    "ax.set_ylabel(r\"${u(x, t)}$\", fontsize=26, color='black', fontdict={'weight': 'bold'})\n",
    "\n",
    "# Set the title with bold font weight\n",
    "ax.set_title(r\"${t = 0.81}$\", fontsize=26, color='black', fontweight='bold')\n",
    "\n",
    "# Set the number of ticks for x-axis and y-axis to 3\n",
    "ax.set_xticks([-1, 0, 1])\n",
    "ax.set_yticks([-1, 0, 1])\n",
    "\n",
    "# Set tick labels fontweight to bold and increase font size\n",
    "ax.tick_params(axis='both', which='major', labelsize=20, width=2, length=10)\n",
    "\n",
    "# # Set the fontweight for tick labels to bold\n",
    "# for tick in ax.get_xticklabels() + ax.get_yticklabels():\n",
    "#     tick.set_weight('bold')\n",
    "\n",
    "# Set the spines linewidth to bold\n",
    "ax.spines['top'].set_linewidth(2)\n",
    "ax.spines['right'].set_linewidth(2)\n",
    "ax.spines['bottom'].set_linewidth(2)\n",
    "ax.spines['left'].set_linewidth(2)\n",
    "\n",
    "# Set the legend\n",
    "# ax.legend()\n",
    "\n",
    "plt.savefig('RNN_0.81_20.pdf', dpi=500, bbox_inches=\"tight\")\n",
    "\n",
    "# Show the plot\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "d7816425",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "findfont: Font family ['Times New Roman'] not found. Falling back to DejaVu Sans.\n",
      "findfont: Font family ['Times New Roman'] not found. Falling back to DejaVu Sans.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import torch\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib.ticker import FixedLocator\n",
    "\n",
    "# Assuming you have defined concatenated_tensor as a PyTorch tensor\n",
    "# concatenated_tensor = torch.cat((tensor1, tensor2), dim=0)\n",
    "\n",
    "# Convert concatenated_tensor to a NumPy array\n",
    "concatenated_array = concatenated_tensor.numpy()\n",
    "\n",
    "# Define custom color levels\n",
    "x = np.linspace(-1, 1, concatenated_array.shape[1])  # Replace 0 and 1 with your actual x range\n",
    "t = np.linspace(0, 1, concatenated_array.shape[0])  # Replace 0 and 1 with your actual t range\n",
    "X, T = np.meshgrid(x, t1)\n",
    "\n",
    "# Define custom color levels using the minimum and maximum from the NumPy array\n",
    "c_levels = np.linspace(np.min(concatenated_array), np.max(concatenated_array), 400)\n",
    "\n",
    "# Plot the contour with interpolated data\n",
    "plt.figure(figsize=(20, 5))\n",
    "plt.pcolormesh(T, X, concatenated_array, shading='auto', cmap='coolwarm')\n",
    "\n",
    "# Set the fontweight for axis labels to regular (not bold)\n",
    "plt.xlabel(\"$t$\", fontsize=26)\n",
    "plt.ylabel(\"$x$\", fontsize=26)\n",
    "plt.title(\"$u(x, t)$\", fontsize=26)\n",
    "\n",
    "# Set tick labels fontweight to regular (not bold) and increase font size\n",
    "plt.tick_params(axis='both', which='major', labelsize=20, width=3, length=10)\n",
    "\n",
    "# Set the fontweight for tick labels to regular (not bold)\n",
    "for tick in plt.gca().get_xticklabels() + plt.gca().get_yticklabels():\n",
    "    tick.set_weight('normal')\n",
    "\n",
    "# Set the number of ticks for x-axis and y-axis to 5\n",
    "num_ticks = 5\n",
    "x_ticks = np.linspace(np.min(T), np.max(T), num_ticks)\n",
    "y_ticks = np.linspace(np.min(X), np.max(X), num_ticks)\n",
    "\n",
    "plt.gca().xaxis.set_major_locator(FixedLocator(x_ticks))\n",
    "plt.gca().yaxis.set_major_locator(FixedLocator(y_ticks))\n",
    "\n",
    "cbar1 = plt.colorbar()\n",
    "# Set the number of ticks for the color bar with uniformly distributed numbers\n",
    "num_ticks = 5\n",
    "c_ticks = np.linspace(np.min(concatenated_array), np.max(concatenated_array), num_ticks)\n",
    "cbar1.set_ticks(c_ticks)\n",
    "\n",
    "# Set the fontweight and fontsize for color bar tick labels\n",
    "for t in cbar1.ax.get_yticklabels():\n",
    "    t.set_weight('normal')\n",
    "    t.set_fontsize(26)  # Increase the font size for color bar tick labels\n",
    "\n",
    "# Increase the size of numbers on axis and color bar\n",
    "plt.xticks(fontsize=26)\n",
    "plt.yticks(fontsize=26)\n",
    "\n",
    "# Increase the tick size and width of the color bar\n",
    "cbar1.ax.tick_params(axis='both', which='major', labelsize=30, width=3,  length=10)\n",
    "\n",
    "# Add a dotted line at t = 0.8\n",
    "plt.axvline(x=0.8, color='black', linestyle='dotted', linewidth=5)\n",
    "\n",
    "#plt.savefig('Contour_LEM_20.pdf', dpi=500, bbox_inches=\"tight\")\n",
    "plt.savefig('contour_RNN_20.jpeg', dpi=500, bbox_inches=\"tight\")\n",
    "# Show the plot\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "784d6cdc",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "96d3f00e",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "pytorch",
   "language": "python",
   "name": "pytorch"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
